PID no PIC em C (controle motor CC)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

PID no PIC em C (controle motor CC)

Mensagempor ricks_and » 10 Set 2008 00:20

Galera, estou precisando controlar um motor CC via PIC e o controle tem de ser feito através de PID, mas não tenho ideia d como implementar isso na programação em C. Alguem tem um programinha semelhante ai pra mim ver como ficaria adaptado ao meu programa (o PID)? Sei fazer isso no LABVIEW, mas para colocar na empilhadeira fica dificil né?

Sei q no site da microchip tem exemplo lá de PID, mas não consegui implementar, o que deve levar em consideração para a implementação?

(o programa irá controlar um motor CC de aproximadamente 3CV, a eletrônica eu já fiz, quer dizer, tem algo pra modificar, e preciso da ajuda de todos vocês para a automatização da empilhadeira elétrica como projeto pra uma empresa). Assim que finalizado eu coloco o projeto todo aqui para o conhecimento de todos vocês...

Overview da automação!

A empilhadeira terá:

1 - Controle de velocidade realimentado (PID) - (NÃO FEITO)
2 - Display com indicação de RPM, CORRENTE (shunt), BATERIA, etc (este já feito)
3 - Proteções - (ALGORITMO NA LOGICA)
4 - No programa eu posso selecionar a velocidade máxima pra controle (SP de máx velocidade como limitação) - (ALGORITMO NA LOGICA)

Valeu galera,

Abração a todos!
ricks_and
Bit
 
Mensagens: 15
Registrado em: 17 Mar 2007 01:55

Mensagempor Djalma Toledo Rodrigues » 10 Set 2008 01:26

o que deve levar em consideração para a implementação?


Bom, o PID obrigatoriamente tem que ser otimizado para cada aplicação.
E qual o procedimento para isso?
1º Faz-se o Controle Proporcional, aumenta o Ganho até que o sistema entre em oscilação.
Reduz o Ganho para metade desse valor.
2º Implementa o Controle Integral --- Erroneamente, creio eu, falam em Ganho de Integração acho que o correto seria a velocidade da integração. Digo isso porque no PID analógico* o Controle Integral é um Amplificador Operacional na Configuração Integrador, onde o elo de realimentação é apenas um Capacitor.
De qualquer modo o integrador é o principal responsável pelo controle, lógico, pois a saída do Proporcional tende a zero a medida que o erro diminui.

3ª Implementa o Controle Diferencial, este somente é necessário se o Controle for muito exigente a velocidade de resposta a um transiente, isto é a uma pertubação. Muitos sistemas nem tem o Diferencial.
Este exige ajuste critico para que o sistema tenha o máximo de velocidade a um degrau mas, não ocorra instabilidade.
Dito de outra forma o Diferencial antecipa a correção necessária devido a inércia do Servo mecanismo.

Abraço e bom PID

(*) Ver minha assinatura abaixo:
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor joao » 10 Set 2008 05:47

aproveitando o tópico...

Alguém ai poderia dar uma pincelada sobre PID? Explicar o básico do que é e de como funciona? :)

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor fabim » 10 Set 2008 08:21

Proporcional integral derivado.
Com estas 3 grandezas, voce pode controlar uma carga, motor, luz por exemplo.
O PID é simplesmente, um circuito que se aplicando uma referencia fixa, voce tem uma resultante tendendo a fixa seguindo a referencia.

Por exemplo um AMP/OP.
Amplificação pela porta nao inversora.
Realimentação através de rede resistiva em divisor X 10.

Você aplica 100mV, a saida do amp/op vai ser de 1V.

Observe que no exemprinhu, voce fez um PID analogico, o amp op tem tudo que precisa para, proporcionar intergrar e derivar a resultante de tal forma que se iguale a referencia, seja para uma tensão de ganho ou atenuação por exemplo.

Para motores, o controle baseia-se no seguinte, suponha que voce sabe que o gerador de alimentação de rotação do motor..
Para 1000 RPM ele gere 100mV, 2000 200mV, 3000 300mV.
ESte motor trabalhando com PWM no controle de rotação/torque.
TL494 da vida.
O PID se daria de tal forma que se voce aplica-se 200mV, o TL iria se comportar de tal forma na grandeza PWM, que o motor tenderia a 2000RPM, para poder gerar uma tensão igual a referencia aplicada.

Tendeu ?

Mais ói, PID é um pouco mais complexo que apenas isto que eu coloquei.
Pois você dependendo do caso, tem que levar em consideração mais um punhadu de variaveis, que determina o controle.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor joao » 10 Set 2008 08:51

dificilzinho heim!
Não entendi direito ainda...

Aparentemente ele é usado para que vc tendo uma entrada X, vc pode ter um resultado fixo que seja uma formula dessa entrada, como por exemplo, X/2 ou X*2+X/10 ou X+1

Essa é a idéia? Então teoricamente e para modelos simples, para um PID feito em PIC vc precisa na verdade "ler" a entrada, resolver a formula do PID e sair com um valor. Essa é a idéia de PID em PIC? Ou tem mais alguma coisa?

Sobre as outras variáveis que você falou ai em cima, nada mais é do que entradas para a sua formula, não é não? Por exemplo, se a temperatura for Y, deve ser X/2, mas se ela for Y+2, deve ser X/10. Logo, essa variavel temperatura vai entrar na formula. Não é isso?

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Tentando ajudar

Mensagempor Andredeos » 10 Set 2008 10:44

Pessoal, aqui tem um pdf que pode ajudar a entender o que é um PID, e como ele é implementado de maneira digital:

http://www.freescale.com/files/microcon ... AN1215.pdf

É da Freescale, mas como tá em C.

Pra calcular as constantes existem diversas maneira, tanto experimentais como teóricas, ai vai da aplicação.

Pra um aprofundamento, tem que buscar os livros de teoria de controle, tipo Ogata ou Nise. Mas o basico é simples, com pequenos artigos na internet mesmo dá pra entender.

Espero ter ajudado.
Andredeos
Bit
 
Mensagens: 49
Registrado em: 09 Set 2007 10:56

Mensagempor Djalma Toledo Rodrigues » 10 Set 2008 12:14

João , Fabim ...

No PID Analógico:

Imagina um Círculo com a Letra Sigma ( símbolo de somatório) em seu interior , duas entradas e uma saída, então temos S=Esp+Er, onde Esp é o Set Point , ou o objetivo a ser alcançado. Er é a realimentação da saída para a entrada, isto é, o elo que fecha o Loop de controle. E S a saída de erro do sistema .

Sugiro que faça o desenho.

No PID esse estágio Sigma é na verdade um "Subtrator" (*) já que a entrada de realimentação tem polaridade invertida em seu interior. Então fica assim: S=Esp+(-Er) então S=Esp-Er . Exemplo Set Point 10 Volts , Realimentação 9 Vdc , Saída igual 1 Volt, 1 Volt é a tensão de erro.

Agora vamos ao P de PID
P é um estágio multiplicador do erro, Um Amp. Operacional na configuração Amplificador / Inversor, vamos implementa-lo com ganho ajustável ?

Agora ao I do PID
Este é bem simples apenas um Amp. Op. na Configuração Integrador.
(Inversor também por sua própria configuração).
Mas, é o mais importante como disse na msg acima. Este estágio faz a intração do erro (sua saída vai aumentado enquanto houver erro).
Se for um sistema que não necessita velocidade de inicial de atuação pode dispensar o P e o D. Bastando apenas um Integrador.
Alguém ensina isso? Ceio que não.


Agora ao D do PID
Também é simples um Amp. Op. na Configuração Diferenciador.

Precisamos agora juntar essas 3 saídas
Um Amp. Op. na Configuração Somador / Inversor ( Inversor para desinverter as 3 entradas.
3 R (Rp, Ri, Rd) ligadas ao pino 2 e um Rs na realimentação. Rp = Ri = Rd = Rs, esta feito o Somador.

A Saída deste Somador vai ao Servo Amplificador, pode ser apenas um transistor potência na versão mínima, e dai ao Atuador (Servo Motor, Resistores de Aquecimento se for controle de temperatura, etc., etc. ).
O Atuador tem um Transdutor para gerar a tensão Er de Realimentação.

Objetivo: Erro Nulo no menor tempo possível.

(*) Subtrator não é um comparador como muitos erroneamente ensinam.
Editado pela última vez por Djalma Toledo Rodrigues em 11 Set 2008 08:56, em um total de 6 vezes.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor ze » 10 Set 2008 12:16

joão, pra lhe pagar as noções de struct & union que nos deste qdo lhe foi sugerido no "curso" C que dava nas escapadas. rs

javascript:OpenDownload('../downloads/downloads.asp?FileID=535273');
(será que o link é esse mermo?) ou senão veja em www.novus.com.br
tem + lá, mas tem que pedir-lhes. mas o especialista é o djalma...
abs
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor fabim » 10 Set 2008 12:47

Djalma, o amigo joão de Santo Cristo do pé de maconha.

Pediu só uma noção basica do que é o PID.

DEFINE-SE.
Controle autonomo de uma grandeza, sob uma referencia.
Seja voltagem, corrente, " ou o que essas duas grandezas possam controlar".

João, sabe aquela fonte regulavel de 1,25V a 32V usando o LM"não lembro o o sufixo".

Nada mais é de que um PID de controle de tensão, ele tem 1,25V de tensão fixa de referencia, você através de arranjos pode criar uma segunda grandeza como corrente tensão ou que seja, baseado nestes 1,25V.
Por exemplo, Vref 1,25V, na porta de um AMP/OP, faz a realimentação pela porta inversora com um divisor resistivo de 3.
1 + 3 * 1,25V = 5V.

Agora entra aquelas variaveis que eu lhe falei.
O pid tem que ter algo que dependendo da temperatura possa, diminuir a corrente, dependendo da corrente possa diminuir a tensão, dependendo do ruido através de um integrador possa anular a dita cuja etc.

Este processo pode ser aplicado em.
Controle de torque, Rotação, Temperatura, campo eletromagnético.. e afins.

Espero ter sido menos, CABALISTICO..rsrs
E mais claro nos exemplos.

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor Djalma Toledo Rodrigues » 10 Set 2008 13:16

Fabim
LM317 / LM350 Parar aki para não voltar a ser "cabalístico" :D :D :D

Se algum dia você tiver que implementar um PIDPIC você, caro amigo, verá a falta que faz a "Cabala" rsrsrsrs

Mas, não tem problema se precisar larga da sua, e pega na minha :oops: :D :D :D
Editado pela última vez por Djalma Toledo Rodrigues em 10 Set 2008 13:22, em um total de 1 vez.
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor joao » 10 Set 2008 13:20

Ola,

Valeu pessoal!

Tem mais informação aqui do que eu poderia esperar!

Agora já tenho uma idéia do assunto para poder me aprofundar mais!
:D

Obrigado,
Joao
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Djalma Toledo Rodrigues » 10 Set 2008 13:25

João sugiro que monte um de posição - Pendulo Invertido por exemplo. È muito interessante e apaixonante.

Enquanto não:
Faça a seguinte experiência, encoste de lado em uma parede e tente erguer o braço, faça a maior força possível. Agora se afaste da parede.
Põ porque seu braço esta se elevando sózinho ?
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor fabim » 10 Set 2008 13:52

o que fode em PID digital, é a maledita hysteresi "assim que escreve/?".
e o tempo de resposta.

Não basta apenas pegar um exemplo da net e simplesmente tentar implementar..

Olha que interessante um pid para um controlador de temperatura.

Temp = 90°C "módicuzinha ovu nagua"

Vou ter um elemento de aquecimento " que tem um tempo para temp X"
A agua que vai ter a sua constante termica, de N joules para N litros pelo tempo X.
E o tempo de resposta do elemento de medida de temperatura.

Ou seja, cerveja....."coca com paçoquinha na verdade"

Suponha que a temperatura esta a 25°C, o pid vai socar o maximo de excitação para que a agua atinja os 90°C, mais aí tem aquela questão, o ponto de medida as vezes ja passou dos 90°C faz tempo, por causa do tempo do sensor de TEMP... etc etc etc etc...

São as variaveis joão..
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor turuna » 10 Set 2008 14:00

Sei que os mestres passaram bem a teoria, mas aqui vai dois links da fábula da caixa d'água que explica legal essa história de PID.

http://www.cti.furg.br/~santos/apostilas/Fabula_PID.pdf
http://www.therma.com.br/artigos_tecnicos/pid.htm

Turuna
turuna
Nibble
 
Mensagens: 97
Registrado em: 10 Mar 2008 12:50

Mensagempor Djalma Toledo Rodrigues » 10 Set 2008 14:40

Fadim Pois é, as variáveis, as incertezas sempre a variarem.... Variável então nem se fala varia pakas :lol:
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x