collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: criar uma ponteH que use apenas 2 I/O  (Lida 6221 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
criar uma ponteH que use apenas 2 I/O
« em: 05 de Dezembro de 2012, 20:31 »
uma ponteH usa sempre (a não ser que seja ja um modulo) 6 pins. 4 para controlar a direção e 2 para controlar o pwm.
isto tira muitos I/O do controlador que podiam ser usados para outras coisas. num picaxe, por exemplo, os pins são todos analogicos/digitais logo estamos a perder 6 pins que davam para sensores.

outro problema é quando o processador apenas tem 2 timers. 1 que controla os delays e outro que controla o pwm e a contagem de tempo de fundo. usando o pwm é impossivel saber quando tempo passou desde um ponto do codigo até outro.

decidi tentar criar um circuito que tem um microcontrolador como slave que irá controlar a ponteH. isto atraves de apenas 2 pins. 1 para cada motor. como se fosse um servo.

as opções de controlo são PWM, sinais analogicos e I2C. sendo os 2 ultimos os prefencias para evitar problemas com o timer.
tornando um microcontrolador slave por I2C não é algo que saiba fazer mas irei tentar aprender e aplicar.
os outros 2 preciso de tambem de algumas informações:
para um microcontrolador gerar um sinal de servo (20Hz) não necessita o uso do timer como um sinal normal de PWM certo? não afecta a contagem de tempo?
será que enviar um sinal analogico de 10Bits será demasiado lento? iria funcionar +- como 1 servo. 1024 frente, 0 tras, 500 parado.

tenho aki um modelo de uma placa que penso usar para o efeito.
a primeira não tem a opção de I2C
a segunda ja tem o I2C


a placa não deverá passar do 10 euros. alias espero que custe apenas 8euros
a l293D aguenta 0.6A por canal



« Última modificação: 05 de Dezembro de 2012, 21:36 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: criar uma ponteH que use apenas 2 I/O
« Responder #1 em: 05 de Dezembro de 2012, 20:38 »
Se usares dois transistores a fazer de NOT nos pinos de controlo de direcção só precisas de 2 pinos mais 2 pwm's.
E sim, podes usar um timer a gerar pwm e contas os overflows para teres noção do tempo, é o que o código do Arduino faz, não tens é valores bonitinhos de 1ms, tens com uma fração, mas com um pouco mais de contas tambem tens valores mais ou menos certos de 1ms, vai ver o código fonte do Arduino e de como fazem/implementam as coisas, porque um timer não serve só para uma coisa, serve para várias ao mesmo tempo.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #2 em: 05 de Dezembro de 2012, 20:45 »
o problema nem é no arduino.
temos um basicx que aquilo apesar de ser muito bom não gera bons pwm. os motores andam aos solavancos. troca-se pelo picaxe e vai que nem um foguete.
o picaxe até gera bem. mas diz isto no manual: Timer cannot be used at the same time as the servo command, as the servo
command requires sole use of the timer to calculate the servo pulse intervals.

edit: acho que o problema era que na conta do overflow não era possivel contar 1ms. e o PWMout faz sempre reset ao timer. é possivel contornar isso nos motores mas ao usar um servo pelo meio estraga tudo

e isto continua a usar menos 2 portas :P
é mais um projecto engraçado para fazer e tenho as peças por ai.
« Última modificação: 06 de Dezembro de 2012, 15:45 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #3 em: 05 de Dezembro de 2012, 21:29 »
Se usares dois transistores a fazer de NOT nos pinos de controlo de direcção só precisas de 2 pinos mais 2 pwm's.

por curiosidade tas a falar deste circuito?
http://www.electronics-tutorials.ws/logic/log47.gif

nunca tive qualquer aula de circuitos por isso não conheço gates logicos.
 basicamente o Q é o oposto do sinal? funciona como ground ou V+
 e o emissor do transistor funciona como ground ou como V+ sendo o oposto do Q?
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #4 em: 07 de Dezembro de 2012, 18:06 »
tou com um problema a programar o attiny24

da isto: avrdude: stk500_getsync(): not in sync: resp=0x00

tou a usar uma board no editor que é para o attiny24 a 8MHz

o attiny é virgem sem bootloader
tb tentei com um atmega 88P e da o mesmo resultado
« Última modificação: 07 de Dezembro de 2012, 19:27 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: criar uma ponteH que use apenas 2 I/O
« Responder #5 em: 07 de Dezembro de 2012, 20:13 »
Tens tudo bem ligado?
Miso com Miso, Mosi com Mosi, massa e alimentação assim como o reset?
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #6 em: 07 de Dezembro de 2012, 21:49 »
verifiquei tudo 2 vezes e ainda outra vez porque nao funcionava.

acho que tem a ver com uma bug com o arduinoISP. e tb talvez tenha a ver com o arduino leonardo. normalmente é tudo para uno.

tb poderá ser do auto reset mas o leonardo acho que nem tem (ao fazer download). é preciso reset manual. e aki diz que é nota para o arduino uno http://arduino.cc/en/Tutorial/ArduinoISP

não consigo mesmo fazer nada


andei a procurar e uma soluçao que nao consigo tentar.
é de alterar um ficheiro: AvrdudeUploader.java
mas não sei onde tenho de o meter. é qualquer coisa:
app\src\processing\app\debug
mas não sei o começo
« Última modificação: 08 de Dezembro de 2012, 00:10 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #7 em: 08 de Dezembro de 2012, 22:45 »
depois de muito procurar e ler tenho estes erros:

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny24
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


o primeiro posso ignorar. o problem é o 2º. posso usar o -F para ignorar? se posso como faço isso?
penso que tenho ligado. isto poderá ser por o processador estar configurado para oscilador exterior
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: criar uma ponteH que use apenas 2 I/O
« Responder #8 em: 08 de Dezembro de 2012, 22:49 »
Mas tu já conseguiste programar o attiny alguma vez ou não?
Se os fuses estão para oscilador externo, e não para cristal, tens de lhe dar uma onda quadrada no pino XTAL1.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #9 em: 08 de Dezembro de 2012, 23:02 »
não nunca consegui programar nada com o arduino leonardo.
posso apenas mandar um pwm de 1mhz?

depois de meter o editor a enviar os dados todos reparei que o que recebo do attiny24 é isto:
Device signature = 0x000000

isto significa que não recebe nada. estar na frequencia errada causava isto?


tenho visto algo sobre usar o -c arduino em vez do stk500v1 mas não sei como fazer isso
« Última modificação: 08 de Dezembro de 2012, 23:15 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: criar uma ponteH que use apenas 2 I/O
« Responder #10 em: 08 de Dezembro de 2012, 23:17 »
És de onde mesmo?
O que tu precisas é de um crash course dado por alguem que perceba minimanente sobre programar avr's, porque assim é complicado...

Alguma vez isso disse programação completa?
Ou alguma vez tentas-te alterar os fuses?
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #11 em: 08 de Dezembro de 2012, 23:26 »
dá sempre done uploading.
ja tentei mas da o mesmo erro.

vou tentar durante a semana ir perguntar a um professor de informatica. usam muitos arduinos la na escola.

ja tentei usar o arduino e o  stk500v1 ambos com os mesmo resultados de não receber nada.
provavelmente vou ter de gravar um bootloader ou um hex file no attiny. isso ai é melhor pedir a alguem ca para me ajudar

ja tentei fazer isto para o fuses:
By default, the ATtiny’s run at 1 MHz (the setting used by the unmodified “ATtiny45?, etc. board menu items). You need to do an extra step to configure the microcontroller to run at 8 MHz – necessary for use of the SoftwareSerial library. Once you have the microcontroller connected, select the appropriate item from the Boards menu (e.g. “ATtiny45 (8 MHz)”). Then, run the “Burn Bootloader” command from the Tools menu. This configures the fuse bits of the microcontroller so it runs at 8 MHz. Note that the fuse bits keep their value until you explicitly change them, so you’ll only need to do this step once for each microcontroller. (Note this doesn’t actually burn a bootloader onto the board; you’ll still need to upload new programs using an external programmer.)

com o fuses penso que vou ter um problema.
copiei no board.txt a do attiny84 e alterei o que é diferente no attiny24 mas esse pack apenas trazia o hex file do attiny24at16. vou precisar dele para configurar os fuses ou apenas é necessario para gravar um bootloader?
« Última modificação: 08 de Dezembro de 2012, 23:53 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #12 em: 13 de Dezembro de 2012, 21:55 »
alguem me podia dizer se ha alguma forma de criar um sinal pwm 10khz para controlar de motores com o arduino para alem desta:

    isto seria a metade da velocidade:

    digitalWrite(motor1Pin, LOW);   
   delayMicroseconds(100);
    digitalWrite(motor2Pin, HIGH); 
   delayMicroseconds(100);

 


a ideia era por exemplo, mandar os motores andar com uma certa velocidade (metade) e depois fazer delay (x). durante esse delay os motores iriam continuar com essa velocidade.
isto é uma pergunta para o arduino leonardo e para o attiny
« Última modificação: 13 de Dezembro de 2012, 21:57 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: criar uma ponteH que use apenas 2 I/O
« Responder #13 em: 13 de Dezembro de 2012, 22:05 »
Para o arduino penso que há uma biblioteca qualquer ou mesmo uma função para isso, há tempos encontrei isso.

Porque é que não programas tu os registos do atmega e fazes isso? Podes misturar as 2 "linguagens" no IDE do arduino (acho eu).

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: criar uma ponteH que use apenas 2 I/O
« Responder #14 em: 14 de Dezembro de 2012, 13:09 »
o que tenho visto é que:

usando analogwrite(x) nas portas ligadas ao timer, envia-se um sinal de pwm sendo x/256 o duty.
para alterar a frequencia temos de configurar o timer a que esta ligada a porta.

ja vi alguns exemplos mas nao entendo e devem ser diferentes em cada tipo de microcontrolador.
alguem sabe como fazer esse setup no timer?
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/