• Welcome to LusoRobótica - Robótica em Português.
 

Projecto Freza CNC - Arduino

Started by c3dr1c, 24 de January de 2012, 19:50

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

c3dr1c

É max, nao diz a nominal.
Mas ya vou deixar é melhor sim. Sabes me dizer se os calculos no post mais acima estão correctos?
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

CBX

a finalidade desses tip122 é apenas on\off? se for porque não trocas por mosfets, já não precisarias das resistências e dos transístores mais pequenos, poupavas algum espaço na placa e um mosfet com características "semelhantes" às dos tip122 são só uns cêntimos mais caros

c3dr1c

Vou deixar a placa assim. O senso ja a desenho, eu tambem ja ca tenho quase todos os componentes...

Mas quanto aos mosfets se bem me lembro das minhas aulas de elctronica 1, eles deixam passar uma certa corrente, atraves do canal criado na gate de acordo com a tensão lhe dada.
Portanto teria de lhe dar x tensão na gate para passar y corrente certo?

O l297 actua com pwm nos sinais enviados pa base das tip122. Será que isso é compativel com mosfets? No fundo a tensão vai variar devido ao pwm certo? E se a tensão varia, varia tambem a largura do canal do mosfet certo?


Senso, na seedstudio o minimo sao 10 placas por cada placa diferente ou 10 placas independemente de serem diferentes ou nao?


"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

CBX

basicamente é isso...

são 10 placas todas iguais

c3dr1c

É pena serem 10 todas iguais, mas tem logica...

Eu tive a ver e o atmega168 tem o mesmo pinout que o 328. Vou comprar um e meter 3 sensores de corrente para monitorizar a corrente de cada motor, ligado a um lcd da Nokia. Que com o labview so consigo monitorizar a corrente apenas quando os motores estão a andar.

Alem disso depois de ter o projecto feito a parte de monitorizar a corrente no labview vai toda fora, para aumentar o desempenho do programa e sendo assim, sempre posso ver a corrente no lcd.

Aproveito e aprendo algum código arduino :D
Em principio vou so entregar o projecto em Setembro, que tenho oportunidade de fazer em epoca especial. Assim fico com tempo e calma para acabar isto como deve de ser.
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

c3dr1c

Bem tive a rever a materia de transistores e eu tenho a resistencia da base da tip122 ligada ao emissor do bjt. Sendo assim a corrente da base da tip122 so depende dessa resistencia e nao do ganho do bjt.
Portanto a resistencia da base do bjt pode ser qualquer uma, desde que sature o transistor e nao ultrapasse os 100mA de valor maximo, certo?

Sendo assim a resistencia da base da tip122 é os cálculos que fiz anteriormente. Agora eu devo dimensionar a corrente Ic da tip122 para um pouco mais de 3A, visto que é para utilizar com  motores ate 3A e ter alguma tolerancia? Ou estou a pensar mal?
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Moddjik

Estás a pensar bem, lol. As contas que fizeste estão bem convém é deixares uma tolerância prai de 20% da corrente máxima.

Podes ver este tópico para mais informações: http://lusorobotica.com/index.php?topic=3499.msg38647#msg38647

Cumps ;)
Moddjik

c3dr1c

#262
Thanks, confirma-se os calculos :D fixe...

Edit:
Concluindo...

Para a resistencia da tip122:
Ic=3.6A (+20%)
Ib=Ic/hfe=3.6/1000=0.0036A
Rb=(Vb-Vbe)/Ib=(5-2.5)/0.0036=694.44ohm

Vb considerei 5V, mas estes 5V vêm do emissor do bjt. Vce=0 certo?

Para a resistencia de base do bjt:
Ib(max)=0.1A - Vou considerar metade da corrente, visto que Ic é independente de Ib.
Rb=Vb/Ib=5/0.05=100ohm
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

c3dr1c

#263
ahah acho que ja percebi.

Ic(tip)=3.6A (30A + 20%)
Ib(tip)=3.6/hfe=3.6/1000=0.0036A

Rb(tip)=(Vb(bjt)-Vbe(bjt)-Vbe(tip))/Ib(tip)=(5-0.7-2.5)/0.0036=500ohm

Ic=Ie, não depende do ganho. Ib=0.05A
Rb(bjt)=(Vb(bjt)-Vbe(bjt)-Re(bjt)*Ie(bjt)-Vbe(tip))/Ib(bjt)=(5-0.7-500*0.0036-2.5)/0.05=0!!!!!!

As quedas de tensão sao grandes demais com 5V. Tenho de dimensionar para 12V por exemplo. Mas nao tenho a certeza. Tenho de fazer uns testes...

EDIT:
Ando um bocado baralhado... Experimentei fazer lei das malhas ao circuito. Talvez este seja afinal o raciocinio mais correcto!?


Ic2=3.6A
Ib2=3.6/1000=0.0036
Ib1=0.004A (valor maximo seguro a debitar do 74ls08N)
Vbe1=0.7
Vbe2=2.5

-V1+R1*Ib1+Vbe1+R2*Ib2+Vbe2=0
-5+R1*0.004+0.7+R2*0.0036+2.5=0
Rb1=(1.8-Rb2*0.0036)/0.004

Se Rb2=100ohm, entao:

Rb1=(1.8-100*0.0036)/0.004=360ohm

Tem toda a logica uma resistencia depender da outra

Ufa tou farto :P

"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

c3dr1c

Sou mesmo burro. Não é que tinha metido os pinmodes dentro dos while loops dos motores  :P
Mudei para fora dos ciclos como é evidente e reduzi o tempo min. entre cada passo dos motores de 30ms para cerca de 15ms.

É engraçado. Comecei a desenvolver o programa com tempos perto destes, depois os tempos foram subindo ate os 60ms  >:( e voltaram novamente a descer com o programa quase concluido  ;D

Agora vou programar uma maneira de trabalhar com os limitadores axiais, mas só lendo um pino do arduino para todos os limit switchs, para poupar nos tempos do programa. Basicamente vou criar um referencial base, para poder bloquear certos movimentos e permitir outros.
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

senso

Porque não mudas para acesso directo aos pinos?
Vais passar de 15ms para 0.1 ms...
Os limit switch usas pin change interrupt e siga.
Avr fanboy

c3dr1c

O que queres dizer com acesso directo aos pinos? É alguma opção que se altera no arduino? :P

Isso dos interrupts permite-me 4 opções de "monitorização" dos niveis logicos e tempos de propagação mais rapidos certo?

Não sei é como faço isso no labview. Tenho de explorar ainda este assunto.

"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

senso

Não, é em vez de escreveres:
digitalWrite(13, HIGH);
escreveres:
PORTB |= (1<<PB5);

O primeiro é uma função lenta, o segundo traduz-se num op-code do micro-controlador executado em 2 ciclos de relógio, em que o registo PORTB é "acedido" e o valor do PB5 é colocado a 1.
Avr fanboy

c3dr1c

hum... provavelmente tenho então de alterar a interface arduino, que faz a comunicação entre o labview e o atmega. tenho de experimentar a alterar o codigo. thanks
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

senso

Mas estás a usar firmata nisso?
Ou simplesmente serial?
Já agora, aqui fica um 3d do pcb gerado aqui: http://mayhewlabs.com/3dpcb


E os ficheiros já com gerbers prontos a enviar para a Seeed, quer dizer quase, que é preciso meter no silk o numero da encomenda.
https://dl.dropbox.com/u/30143255/driver.zip
Avr fanboy