LusoRobótica - Robótica em Português
Discussão Geral => Mercado LusoRobótica => Procura-se => Tópico iniciado por: beirao em 07 de Março de 2011, 12:03
-
Alguém daqui tem um PIC 18F4331 para vender/oferecer?
Obrigado!
-
pshé pá... que referência tão complicada! :o :D
É por causa do PWM e QEI?
-
complicada? nao :D hehe
yap, é para controlar 5 servos... assim usamos as 4 saídas PWM para as rodas (do módulo pcpwm que o PIC tem) e um módulo CCP para um outro servo que vamos precisar ;) para além de que com este pic podemos ter frequências baixas (para os servos, 50Hz) nas saídas PWM, o que não dá com todos os modelos
por acaso ia mesmo agora dizer que já arranjei este PIC ;) (também acho que era dificil alguém daqui ter, visto ser um PIC pouco usado)
P.S. - QEI só há em dsPIC, certo?
-
É o tal projecto que me falaste?
Esse PIC tem QEI, vai lá ver bem ;)
É um PIC bastante menos usado do que os outros "mais comuns", daí o seu preço tb não ser o mais convidativo.
O que em projectos série fazemos, é escolher um PIC que tenha as capacidades de processamento e periféricos mínimos, e o mais baixo preço.
Nesse caso com tantos PWM, eu teria optado por um 12F/16F com USART/SPI/I2C, e punha os PWM neste PIC, tendo tudo por interrupções. Visto que têem frequências tão baixas, a resolução é enorme, e o tempo de IDLE do CPU também...
Para verificar o vosso tempo de IDLE, liguem um LED num pino livre.
Activem o LED qd saiem de uma função/interrupções, desactivem qd entram.
Vão ficar espantandos qt tempo o vosso PIC passa sem fazer nada :)
Acaba por ser um bom exercício, optimizar o sistema.
-
Em relação ao controlo dos servos, estes não aceitam sinais com frequências mais altas supostamente!?
-
Boas
Tenho esse pic ligado a uns 5 servos mas n consigo obter frequências de 50Hz, tenho frequencias prai de 100Hz, também serve, actualiza o servo mais vezes do que devia mas penso que esse método não é bom para controlar servos pk perde-se mta resoluçao pk mesmo que de uma freq de 50Hz, so vais usar o dutycicle nos 1 ou 4% para controlar servos e fica-se com uma resolução de caca.
Cumps
-
Já tinha dito ao Beirão, implementem PWM por interrupções, é muito simples! podem ter (quase) todos os pinos do PIC para PWM !!
Já pús algum código p isso, se quiserem mais dicas apitem.
-
asena: tem razão sim senhor, o PIC tem QEI :) Quanto à escolha do PIC, aqui nota-se a única desvantagem que tem o facto de podermos pedir samples com fartura. Ou seja, na cadeira de microprocessadores usamos PIC18F, podemos pedir samples dos PIC´s que quisermos, logo não temos noção do preço de cada um. Contudo, tendo em conta que o projecto não é para ser produzido, é apenas para fazer aquela unidade, e não pagamos a sample, então isso não é nenhum inconveniente!
Quanto ao uso de interrupções ao invés do PWM, não digo que não. É simples de se fazer sem dúvida! Mas, FET_Destroyer, eu consigo ter frequências de 50Hz neste PIC... Tendo frequências de 50Hz, e conseguindo variar o duty-cycle de 0 a 99% (habitualmente eles não gostam que se meta duty-cycle a 100%), onde está a falta de resolução que falas? Claro que com interrupções é mais preciso, mas se tens uma gama de 100% tens resolução suficiente.. digo eu!
-
A falta de resolução é que só vais usar o duty-cycle prai até 4% no máximo, 50Hz sao 20ms de perido, e tu queres no máximo 2ms para os servos, ou seja, 10bits (1024) são para pwm de 100%, para 4% ficas com 41bits de resolução para o servo, ou seja mto pouca resolução.
asena: tem razão sim senhor, o PIC tem QEI :) Quanto à escolha do PIC, aqui nota-se a única desvantagem que tem o facto de podermos pedir samples com fartura. Ou seja, na cadeira de microprocessadores usamos PIC18F, podemos pedir samples dos PIC´s que quisermos, logo não temos noção do preço de cada um. Contudo, tendo em conta que o projecto não é para ser produzido, é apenas para fazer aquela unidade, e não pagamos a sample, então isso não é nenhum inconveniente!
Quanto ao uso de interrupções ao invés do PWM, não digo que não. É simples de se fazer sem dúvida! Mas, FET_Destroyer, eu consigo ter frequências de 50Hz neste PIC... Tendo frequências de 50Hz, e conseguindo variar o duty-cycle de 0 a 99% (habitualmente eles não gostam que se meta duty-cycle a 100%), onde está a falta de resolução que falas? Claro que com interrupções é mais preciso, mas se tens uma gama de 100% tens resolução suficiente.. digo eu!
-
Então se usar uma frequência de 500Hz já tenho a resolução dos 10bits... Logo, já não há nenhum incoveniente em usar o PWM, certo?
P.S. - Não quero ser teimoso e insistir em usar o módulo PWM em vez das interrupções, quero é perceber todas as vantagens entre as duas opções!
-
Aqui resta saber que tipo de frequência estamos a falar. Se é a frequência de trabalho do servo, se é a frequência de actualização do servo. (Não esquecer que o duty-cycle é sempre de ~50%, pois só temos q mudar o período para o Servo)
#
Se for a frequência de trabalho, então tem q se garantir pelo menos de 1 ms a 2 ms, se se tiver apenas 180 graus de rotação, com 1.5ms nos 90º/0º/centro
1 ms / 180º = ~5,55 us / 1º -> é esta a resolução q se pretende. Sendo 2ms=500Hz e 1ms=1000Hz, então temos uma variação de 500Hz.
No modulo CCP em PWM, é o PR2 que controla a frequencia.
Logo, só temos 8 bits em todo o curso de PR2. E menos ainda porque não o vamos usar todo.
Para Fcy de 1MHz (Fosc 4MHz), prescaler de 16, PR2 de 0xFF têm-se Fpwm ~250Hz
Quanto maior a Fcy, menor a resolução. Que clock estão a usar ?
Para Fpwm de ~1000Hz, então PR2 = 64
Usem o osciloscópio para vos ajudar a tirar medições do PWM resultante.
#
Se for a frequência de actualização, ... então depende do trabalho q é preciso fazer. E pode usar-se o TMR2 à mesma, como temporizador de actualização do servo. Tirando pulsos do Postcaler com interrupções TMR2IF, se não me falha a memória.
-
De acordo. Mas neste caso não tou a usar o módulo CCP, estou a usar o modulo pcpwm (penso que se chama assim), onde tenho realmente os 10 bits e não os 8bits do PR2.
Mas sim, asena, concordo com tudo o que disseste :D