2014-07-15 10:34 GMT-03:00 Evandro Nunes: > sim, estou assistindo a um curso no youtube excelente, ja consigo ler > esquematicos agora apesar de não ter decorado todos os simbolos, e em > especial não decorar as cores dos aneis nos resistores mas tudo ficou claro > > dentro desse assunto me digam o seguinte quero fazer isso em shell script: > > http://beagleboard.org/Support/BoneScript/ServoMotor/ > > no trecho: > > var duty_cycle = (position*0.115) + duty_min; > b.analogWrite(SERVO, duty_cycle, 60, scheduleNextUpdate); > > o duty_cycle é o dutyA ou dutyB nas sysctl do freebsd? > > o period é o 200? equivalente a: > > // call updateDuty after 200ms > setTimeout(updateDuty, 200); > > posso por então o period do PWM em 200 e o dutyA (ou B?) em > (position*0.115) + duty_min num shell script? >
Cada modulo de PWM tem duas saídas que são nomeadas de PWM1A e PWM1B para o modulo 1 e PWM2A e PWM2B para o modulo 2. Como a freqüência do PWM é configurada por modulo as saídas A e B vão operar na mesma freqüência mas podem ter ciclos de trabalho diferentes (por exemplo: frequência PWM 100Khz, saída A 20% e saída B 60%). Assim são 2 módulos PWM e 4 saídas. O pino 14 do conector P9 corresponde a saída A do PWM1 (conforme https://wiki.freebsd.org/FreeBSD/arm/BeagleBoneBlack). No caso do servo, o duty cycle não são os 200ms, esse valor é o tempo no qual a saída do PWM é atualizada (a cada 200ms ela tem um novo valor). O período é calculado através da freqüência que nesse caso é o '60' passado no analogWrite(). O 60 corresponde a 60Hz (servos RC operam entre 50~60Hz). O PWM da BBB não funcionava com freqüências tão baixas (antes o mínimo era 1.525kHz) até a r266937 quando corrigi isso. Como ainda não fiz o MFC você só vai conseguir utilizar servos com o -current (que tem 2 sysctls a mais - clockdiv e frequency). Com essa sysctl 'frequency', você pode setar ela diretamente pra 60 e depois só precisa alterar o duty cycle (A ou B dependendo da saída que você estiver utilizando) para movimentar o servo. Como teste eu liguei um potenciometro em uma das entradas analógicas e um programa em C lendo esse valor e alterando o duty cycle do PWM, assim o servo acompanhava o movimento conforme o movimento que era feito no potenciometro. Luiz ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd