collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[27 de Março de 2024, 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: Projecto - Introdução à Robotica  (Lida 31380 vezes)

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

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Projecto - Introdução à Robotica
« em: 10 de Novembro de 2012, 14:46 »
Boas pessoal.

Como medida de me iniciar no mundo da robótica/programação decidi começar a construir um robot simples.


O robô irá ter duas rodas dianteiras com controlo independente e uma roda traseira livre.
Terá de ser todo construído com materiais que tenha por casa/sucata electrónica de modo a estimular a criatividade.

Também tentarei evitar integrados com circuitos simplificados de modo a tentar perceber ao máximo toda a electrónica analógica envolvida (excepto o microcontrolador, portas and, not...)

O microcontrolador será um Atmega 328P-PU e será programado em assembly (penso que se chama assembly ao tipo de programação que o Senso meteu ai num tutorial dele).


Bem e ontem como nao tinha nada para fazer comecei a montar alguns circuitos de controlo dos motores.

O circuito será composto por uma ponte H para definir o sentido de rotação do motor, uma latch D para comutar a ponte H com um único sinal digital e um circuito de potência controlado através de PWM.

Quanto ao circuito de potência pensei em duas alternativas, mas não sei qual delas usar:




Qual será o melhor método?


Abraços
"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

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Projecto - Introdução à Robotica
« Responder #1 em: 10 de Novembro de 2012, 16:10 »
Estás a pensar fazer isso com transistores bipolares? Ou os transistores do esquema são para ser substituidos por MOSFETS? Se não, cuidado com as polarizações dos transistores.

Eu apostava no controlo de potência por transistor na saída, porque acho que as portas lógicas não te dão tanta rapidez... Tudo depende, claro está das portas que usares.

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #2 em: 10 de Novembro de 2012, 16:37 »
Na saida ate da menos trabalho :P

Estava a pensar usar bipolares mas achas que devia usar mosfets? Assim podia controlar a potencia pela variação da tensão no mosfet (nao sei ganho alguma coisa com isso :P


Mas quanto às polarizações, pelo que percebo disto, os transistores T3 e T4 têm um funcionamento "normal" em que a corrente Ic depende do ganho e da corrente de base, funcionando assim em modo emissor comum. Agora basta certificar-me na datasheet que Vce e Ib correspondem à zona activa, certo?

T1 e T2 como têm a carga no emissor ja nao sei se o funcionamento será o mesmo. Penso que Ib ficará dependente do ganho e não Ic. Mas mais que isto não sei.
"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

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Projecto - Introdução à Robotica
« Responder #3 em: 10 de Novembro de 2012, 18:24 »
Tens aqui uma implementação com MOSFET's que te permite "esquecer" a questão das polarizações, uma vez que vais estar sempre a trabalhar no corte ou linear (LOW/HIGH):
http://3.bp.blogspot.com/_PFcqqI1wdqY/TJo-esl_1ZI/AAAAAAAAAJk/zQed6Tz_krU/Ponte%20H%20(via%20PWM).JPG

Esta implementação usa 2 sinais PWM, mas pode ser adaptada para usar o DIR, EN e PWM que tens nos esquemas anteriores. ;)

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #4 em: 10 de Novembro de 2012, 19:12 »
Mas nao tenho ca disso em casa. Vou mesmo para os bipolares.
Ja andei a ler e pelo que percebi o objectivo da polarização é compensar a instabilidade criada pela variação de temperatura.


Bem posso utilizar os transistores como interruptores utilizando uma polarização com corrente de base constante. A variação da corrente em Ic nao apresenta problemas visto nao ser preciso limitar a corrente. Depois o PWM trata disso.

Mas por outro lado, se fizer uma polarização com corrente de emissor constante poderei fixar a corrente máxima do motor para quando ele entre em STALL nao se danificar. Alem disso permite que o transistor nao fuja do seu estado de operação.

É este o caminho? :P
« Última modificação: 10 de Novembro de 2012, 19:18 por c3dr1c »
"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

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Projecto - Introdução à Robotica
« Responder #5 em: 10 de Novembro de 2012, 19:43 »
Boas.

A polarização com BJTs é algo complexo e eu, para ser sincero, não domino o uso de BJTs em corte e saturação, só os estudei na zona activa.

Tens aqui um artigo muito bom que explica como criar uma H-bridge com BJTs
http://www.mcmanis.com/chuck/robotics/tutorial/h-bridge/bjt-bridge.html

Concretamente, na secção "4.0 The Complete BJT based H-Bridge", tens o esquema com FWD/REV/EN, em que o Enable pode ser usado como PWM (invertido).

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #6 em: 11 de Novembro de 2012, 12:54 »
Bem eu montei o meu circuito e funciona, mas nao sei se será nas condições devidas. Para resolver o caso das polarizações do T1 e T2 vou troca-los por PNP e fica resolvido. Achei interessante nesse tutorial eles colocarem uma resistencia de pull-up entre a base e o emissor, acho que vou fazer o mesmo.

Edit: E o novo circuito fica assim:


Agora é so dimensionar o valor das resistencias para um bom funcionamento.
Ha e faltam condensadores de decoupling no circuito. No motor aconselham um condensador de quanto? 100nF?
« Última modificação: 11 de Novembro de 2012, 13:23 por c3dr1c »
"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

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Projecto - Introdução à Robotica
« Responder #7 em: 11 de Novembro de 2012, 13:31 »
A polarização serve para escolher o ponto de funcionamento em repouso do transistor. O que é que isto quer dizer? Antes de mais, faz mais sentido falar em polarização noutro tipo de circuitos, em particular amplificadores. Se meteres um sinal AC (ou seja, que tem partes negativas e partes positivas) na base dum transistor (através de uma resistência), o sinal que sai no colector fica distorcido e perde as partes negativas (é uma forma de fazer pedais de distorção soft). A solução para isto é fazer com que o sinal no colector esteja "no meio" do valor possível de saída, e depois "adicionar" o sinal de entrada; o sinal de saída passa a ter "o zero" no meio e aí já pode ir para baixo e para cima mantendo fidelidade ao sinal de entrada. A polarização é meter na base a corrente necessária para colocar a saída "a meio", geralmente feito com resistências.

Para resolver os desvios causados pela temperatura só com realimentação. Dificilmente conseguirás controlar a corrente máxima no motor de forma fiável controlando a corrente de base, porque todos os transístores têm ganho diferente (mesmo os do mesmo modelo) e esse ganho varia um pouco com temperatura, tensão e corrente.

A resistência entre a base e o emissor serve para garantir que o transistor está desligado se as entradas (base) forem deixadas "no ar", ou seja, sem estarem a levar com uma tensão específica. Estes dispositivos têm amplificação e são sensíveis; se uma entrada ficar no ar, coisas estranhas podem acontecer. Assim, colocando uma resistência de alto valor (para não interferir com o funcionamento normal) garantimos que na verdade nunca está "no ar".
« Última modificação: 11 de Novembro de 2012, 13:38 por Njay »

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Projecto - Introdução à Robotica
« Responder #8 em: 11 de Novembro de 2012, 14:27 »
Boas.

Obrigado pela explicação NJay... É sempre bom aprender com alguém que saiba. :)

Cumps,
Ricardo

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #9 em: 11 de Novembro de 2012, 18:47 »
Muito obrigado aos dois :D

Então como posso limitar a corrente dos motores de modo a que não se danifiquem em caso de estarem em esforço sem rodarem?

Os transístores então utilizo só como interruptores electrónicos.

« Última modificação: 12 de Novembro de 2012, 19:26 por c3dr1c »
"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

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #10 em: 12 de Novembro de 2012, 19:26 »
Bem uma das funções que quero que o robot faça é seguir uma linha. Para tal vou utilizar o sensor optico tcrt5000.



http://www.vishay.com/docs/83760/tcrt5000.pdf

O circuito é este:


Mas gostaria que fosse possivel afina-lo.


O led penso que tenha uma queda de tensão tipica de 1.25V e uma corrente máxima de 60mA. Bem se utiliza-lo com 60mA penso que emita mais luz do que com 30mA.

Portanto com 60mA precisarei de uma resistência de:
(5-1.25)/0.06 = 62.5ohm

Com 10mA precisarei de uma resistência de:
(5-1.25)/0.01=370ohm

Que tal trocar a resistência por um potenciómetro? Ou depois o potenciómetro varia muito com o aquecimento? Mas sao correntes pequena, penso que nao.

------------------------

O transístor é que não percebo o funcionamento. Portanto vou ter um no entre o transístor e a resistência que está ligado a uma entrada analógica do arduino. Esta tem uma impedância infinita resultando numa corrente perto de 0, medindo assim a diferença de potencial entre o colector e o ground.

Ic máximo é de 100mA. A queda de tensão Vce é que não sei o valor, será 0?

Portanto R = 5/0.1 = 50ohm. (mas tipicamente custuma-se usar resistências de 10kohm = 0.5mA)

Se aumentar o valor da resistência resultando na diminuição de Ic a medição será diferente?


Supostamente o arduino medirá 5V menos a queda de tensão na resistência certo?
5-R*Ic = 5-50*0.1 = 0V (como é óbvio)

Se nao existir reflexão da luz aproxima-se de 5V. Exemplificando com 10mA:
5-R*Ic = 5-50*0.01 = 4.5V


Agora posso optar por duas gamas de correntes. Uma que vai de 0mA a 100mA (R=50ohm) e outra que vai de 0mA a 0.5mA (R=10kohm). Qual das duas usar?

Aqui tambem posso trocar a resistencia por um potenciometro?


Nao sei se nao estou a baralhar um bocado as coisas :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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Projecto - Introdução à Robotica
« Responder #11 em: 12 de Novembro de 2012, 19:39 »
Porque é que queres ter esses valores a variar?
O transistor tem a saida em coletor aberto, e leva uma resistência para fazer de pull-up.
Usar o led com a corrente máxima, provavelmente só lhe vai retirar tempo de vida e não tens ganhos nenhuns com isso, e para seguir uma linha basta usar o sensor com uma entrada digital, ou está na linha, ou não está, valores tipicos será uns 270ohms no led, e 10k para o pull-up.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #12 em: 12 de Novembro de 2012, 22:46 »
Realmente foi mal pensando. Eu so preciso de saber se está na linha ou não :P A não ser que faça uma linha em degradê que por acaso não era nada má ideia :P Poderia escurecer a linha das extremidades ate ao centro.

Mas pronto, a ideia está correcta na mesma?

Mais tarde vou ldr's para seguir a luz. Se calhar ai é que já se aplica esta analogia.
"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

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Projecto - Introdução à Robotica
« Responder #13 em: 13 de Novembro de 2012, 09:37 »
A saida do TCRT5000 podes ligar a um pino que tenha ADC e ele tem uma saida mais ou menos proporcional á intensidade do preto que a linha tiver, mas continuas a ter de meter a resistência de 10k a fazer de pull-up, depois é testares.
E outra coisa, a impedância de entrada do ADC dos atmegas é de +/- 10K ohms, muito longe de infinito.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Projecto - Introdução à Robotica
« Responder #14 em: 11 de Janeiro de 2013, 20:39 »
Boas.

Ontem voltei a este projecto. E o primeiro erro que vi logo... Pra que raio uso uma latch D que só me serve para adicionar um sinal invertido???  Para isso uso uma porta NOT  ;D :P

E o novo circuito fica assim:


Decidi desenhar a board. É basicamente o circuito 2x.
Tem entradas para controlo de potencia, direcção e para desligar o controlo de potencia. Tem vários pin headers porque vou colocar jumper's caso queira testar o circuito sem o microcontrolador.
Mede 5 x 8 cm.



Ainda nao sei se me apetece retirar um 74LS04N, visto que so preciso no total de 6 portas NOT. O 74LS04N inferior está mal ligado. Depois corrijo e coloco aqui o file para quem quiser.

Aceitam-se criticas  :D

Abraço
« Última modificação: 11 de Janeiro de 2013, 20:44 por c3dr1c »
"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