Pesquisar este blog

Mostrando postagens com marcador controle de motores. Mostrar todas as postagens
Mostrando postagens com marcador controle de motores. Mostrar todas as postagens

segunda-feira, 7 de outubro de 2019

Driver de motores de passo

Driver para Motores A4988


Há um tempo eu ganhei duas plaquinhas com o driver de motor A4988 da Allegro que facilita enormemente o uso de motores de passo, sem precisar fazer uma programação voltada para acionar as bobinas em sequência correta. Com esse driver, basta selecionar o microstepping desejado, a direção do motor e enviar os pulsos. E ele ainda aceita níveis lógicos de 5V de 3.3V, facilitando tanto o uso por Arduinos como Raspberry Pi.

As dimensões da plaquinha são reduzidas e já vem com duas fileiras de barras de pinos, facilitando o uso com protoboard. Segundo a datasheet, o driver permite o controle de altas correntes (2A) e mesmo com o tamanho reduzido, não esquenta muito (apesar do dissipador pequeno).

Veja como pode ser o interfaceamento com um microcontrolador:


Mas o acionamento do driver e do motor de passo não precisa de um microcontrolador (ou Arduino ou RPI).  Basta uma fonte de pulsos (eu usei um simples 555 em modo astável) e fornecer os níveis lógicos adequados para os pinos RESET, ENABLE, DIR (direção), MS!-3 (que definem o microstepping) e jogar os pulsos vindos do 555 no pino STEP.  

O vídeo com a montagem usando o 555:





quarta-feira, 15 de outubro de 2014

Irrigador automático programável

Sistema para Irrigação Automática de Plantas

Precisei bolar um sistema para regar automaticamente alguns pés de pimenta que plantei, enquanto estiver viajando, já que as pimenteiras precisam ser regadas todos os dias. Isso é um equipamento baseado em timers que ligariam uma bomba elétrica por determinado tempo e somente depois de um intervalo voltariam a ser acionados. Esses equipamentos existem comercialmente, mas são muito caros e não seriam difíceis de serem montados. 
O circuito em si não tem nada de novo, apenas um microcontrolador PIC com alguns botões para programar os tempos, um relé para ligar o motor da bomba e um display para enxergar as coisas (programação de tempos, contagem, etc).
A bomba escolhida foi dessas de fontes decorativas, que trabalham submersas na água e tem alimentação diretamente na rede elétrica (127Vac ou 220Vac). Comprei uma com vazão de 220 litros por hora com pressão para até 0,5 metro de diferença. Ela tem também um ajuste de vazão e saída para mangueira de 5 mm interna.  Comprei também alguns Ts (divisores de ar para aquários) com torneirinha que ajudam a regular a quantidade de água que vai para cada derivação nas mangueiras siliconadas de diâmetro 5 mm externo.

Acima o esquema elétrico. O display é um desses de 16 x 2 linhas comum, o relé é um de 5V ou de 12V (dependendo de onde o ligamos na fonte) As chaves podem ser do tipo push-buttons normalmente abertas, eu usei chaves alavanca spdt que fica NA,  onde a primeira serve como duplo comando (reset e botão 1) e as demais apenas para um comando. Usei uma placa universal, portanto não desenhei um layout para uma placa de circuito impresso. 

Acima uma foto do controlador timer com a bomba de água, as mangueiras e os divisores de ar. Essa configuração me permite 6 saídas de água. 

Detalhe dos divisores de ar e das 6 saídas de água.

O controlador dentro de uma caixa de plástico Patola PB112, mostrando o menu inicial (setup: configura o tempo de acionamento da bomba, o intervalo entre as regas e se inicia regando)

Display indicando que a bomba está acionada (led aceso). Na tomada devemos ligar o plugue da bomba de água. 

O código Hexa para o PIC (16F628) é o seguinte:
:10000000B20147290408A70006108610861083163F
:100010000610861086100F30860583122708B21846
:100020002E283A30A100FC30DF203330A6004220D9
:100030001030A1006830DF2042206430DE20223002
:10004000A600422028302D200C302D2001302D20FC
:1000500006302D20B21427082E283214A600321C98
:100060003C288610033C031C412841200730A10096
:10007000D030DF20031408003214FE3C031942295B
:100080008614321C321006140F3086052608F0390B
:1000900086040610A60E321842283230DE200314E1
:1000A0000800B31329080319B3170530A800273037
:1000B000A300103067200330A300E8306720A301BD
:1000C00064306720A3010A30672024086E28A2004C
:1000D0002508A1002408A0000B212008A000A803E7
:1000E0000319B313290803197828280203180800F4
:1000F0002008031DB313B31B0800303E3D29A300A5
:10010000360884008417340980058413A308031972
:100110004229F030A50022088038A400F030A50361
:100120000319A5000319A303031942299728AE2038
:10013000030120183408A21F3408A2080319030180
:10014000A40FA42880068B28A52800008E288317DA
:100150008001840AFF3E031DA828422921082004AB
:100160000319A00A8030201AA1062019A106A018A0
:10017000A106210DA00DA10D422983161C141A08F9
:1001800083169B0A4229030183169A001C155530D9
:100190009D00AA309D009C149C18CC281C119B0A21
:1001A0004229A301A200FF30A207031CA307031CDE
:1001B00042290330A100DF30DF20D328A101E83E2F
:1001C000A000A109FC30031CE828A0070318E528BB
:1001D000A0076400A10FE5282018EE28A01CF22833
:1001E0000000F2280800A2000130FB28A20006301F
:1001F000FB28A2000530A80023082102031D0229C4
:1002000022082002043003180130031902302805A7
:10021000031DFF304229A501A4011030A600210DC5
:10022000A40DA50D2208A4022308031C230FA50278
:10023000031821292208A40723080318230FA50760
:100240000310A00DA10DA60B0F2920084229103084
:10025000A800A101A001A70CA60C031C35292208A7
:10026000A00723080318230FA107A10CA00CA50CBD
:10027000A40CA80B2B2924084229840031088A00E9
:10028000300882008313031383126400080083166E
:10029000FE3085008601831207309F0020308400E5
:1002A0006030A820A03084005030A8202030840086
:1002B0003030A720FE3003200130032049300320D6
:1002C000723003207230032069300320673003202E
:1002D00061300320643003206F300320723003202C
:1002E0002030032061300320753003207430032058
:1002F0006F3003206D30032020300320FE300320B8
:10030000C0300320613003207030032065300320AB
:100310007230032074300320653003202030032026
:100320003130032020300320703003202F30032091
:10033000203003206D300320653003206E30032011
:100340007530032064008518A829FA30D120D629F9
:10035000C20A0319C30A6030A000EA30A1004308B2
:10036000A3004208F920031DD32983169B018312A1
:10037000BD20C900831601309B008312BD20BE0042
:10038000831602309B008312BD20BF00831603300A
:100390009B008312BD20BA00831604309B00831299
:1003A000BD20BB00732C6430DE20A2290630B600CD
:1003B0000830B4006430A2000A307F2083169B010D
:1003C0008312BD20C900831601309B008312BD201B
:1003D000BE00831602309B008312BD20BF0083162F
:1003E00003309B008312BD20BA00831604309B00AB
:1003F0008312BD20BB00FE300320013003205330A8
:1004000003206530032074300320753003207030E2
:100410000320203003203D3003203E3003202030D5
:100420000320623003206F300320743003206130DA
:1004300003206F3003202030032031300320FE30B2
:100440000320C0300320493003206E300320693080
:1004500003206330032069300320613003203D30E6
:1004600003203E30032020300320623003206F3011
:10047000032074300320613003206F3003202030CC
:1004800003203230032064008518492AFA30D12035
:10049000502A640005194F2AFA30D120732C432AC0
:1004A000BE01BF01FE300320013003205430032081
:1004B000653003206D300320703003206F3003203F
:1004C0002030032069300320723003207230032073
:1004D000693003206730032061300320633003203C
:1004E000613003206F30032020300320FE300320D2
:1004F000C0300320A9013E08A4003F08A500023037
:10050000B000B1015120203003207330032065304A
:10051000032067300320753003206E3003206430E1
:1005200003206F300320733003206430D120640037
:100530008519BF2AFA30D1200A30BE070318BF0A36
:10054000FE300320C0300320A9013E08A4003F086C
:10055000A5000230B000B1015120203003207330DB
:1005600003206530032067300320753003206E3090
:100570000320643003206F300320733003206400B5
:100580000519E62AFA30D120BE0A0319BF0AFE3047
:100590000320C0300320A9013E08A4003F08A500A5
:1005A0000230B000B101512020300320733003200D
:1005B0006530032067300320753003206E30032040
:1005C000643003206F3003207330032064008518EB
:1005D0000C2BFA30D120BE01BF01FE300320C03009
:1005E0000320A9013E08A4003F08A5000230B00086
:1005F000B1015120203003207330032065300320E7
:1006000067300320753003206E30032064300320F0
:100610006F300320733003206400051A1E2BFA305C
:10062000D120831601309B0083123E08C42083161C
:1006300002309B0083123F08C4201F2B972ABA0167
:10064000BB01FE300320013003205430032065300D
:1006500003206D300320703003206F3003202030E2
:100660000320693003206E3003207430032065308E
:1006700003207230032076300320613003206C3079
:1006800003206F3003203A300320FE300320C030B7
:100690000320A9013A08A4003B08A5000230B000DD
:1006A000B1015120203003206D3003206930032038
:1006B0006E30032075300320743003206F30032028
:1006C000733003206430D120640085197C2BFA300C
:1006D000D1203A08A0003B08A100A3013B30F6203E
:1006E000031D772B3C30BA070318BB0A7B2B0A305B
:1006F000BA070318BB0AAE2364000519932BFA301E
:10070000D1203A08A0003B08A100A3013B30F6200D
:10071000031D8F2B0530BA070318BB0A922BBA0AA8
:100720000319BB0AAE23640085189B2BC830D12067
:10073000BA01BB01AE236400051AAD2BC830D1202D
:10074000831603309B0083123A08C42083160430BA
:100750009B0083123B08C420112C642B3A08A00094
:100760003B08A1003C30A200A3010B21B8002108E6
:10077000B9003808A6003908A7003C30A200A30140
:100780002721C0002508C10040083A02BC004108EA
:10079000031C013E3B02BD00FE300320013003205C
:1007A00054300320653003206D3003207030032067
:1007B0006F30032020300320693003206E30032087
:1007C000743003206530032072300320763003201C
:1007D000613003206C3003206F3003203A30032057
:1007E000FE300320C0300320A9013808A4003908D6
:1007F000A5000230B000B101512068300320203044
:100800000320A9013C08A4003D08A5000230B00067
:10081000B10151206D300320693003206E30032078
:100820000800FE30032001300320493003206E30E1
:1008300003206930032063300320693003206130D6
:1008400003202030032061300320673003207530FF
:100850000320613003206E300320643003206F30AA
:100860000320203003203F300320FE300320C0301F
:10087000032033300320203003203D30032020307C
:10088000032073300320693003206D3003202030B3
:1008900003202030032034300320203003203D305B
:1008A0000320203003206E300320613003206F309E
:1008B000032064008519662CFA30D1200130C9006C
:1008C00083169B0183124908C420D6296400051AA7
:1008D000722CFA30D120C90183169B01831249087A
:1008E000C420D629592C0630B6000830B400643034
:1008F000A2000A307F2064004908013C031D812CBE
:100900001C25C201C3014208A0004308A1003B0806
:10091000A3003A08F320031D1A2D42083A02C6002C
:100920004308031C013E3B02C7004608A0004708DD
:10093000A1003C30A200A3010B21B8002108B9009E
:100940003808A6003908A7003C30A200A3012721DF
:10095000C0002508C10040084602BC004108031C35
:10096000013E4702BD00FE30032001300320463027
:100970000320613003206C30032074300320613089
:1009800003206E300320643003206F3003202030BA
:10099000032020300320203003202030032020308B
:1009A0000320203003202030032020300320FE309D
:1009B0000320C0300320A9013808A4003908A5008D
:1009C0000230B000B10151206830032020300320F4
:1009D000A9013C08A4003D08A5000230B000B10107
:1009E00051206D300320693003206E300320C40194
:1009F000C5014408A0004508A100A3013B30F32035
:100A0000031D162D06150130A300F330D22064001B
:100A1000051A0D2DFA30D120D62906110130A30078
:100A2000F330D220C40A0319C50FF92CC20A0319E6
:100A3000C30F832C1C25812C0630B6000830B4006F
:100A40006430A2000A307F20051400000615C201A0
:100A5000C3014208A0004308A1003F08A3003E08CC
:100A6000F320031D8A2DFE3003200130032049307E
:100A70000320723003207230032069300320673076
:100A80000320613003206E300320643003206F3078
:100A900003202E3003202E3003202E3003202E3052
:100AA00003202E3003202E3003202E300320FE3072
:100AB0000320C0300320A9014208A4004308A50078
:100AC0000230B000B10151202030032073300320E8
:100AD0006530032067300320753003206E3003201B
:100AE000643003206F300320733003202030032054
:100AF00020300320203003200330A300E730D22031
:100B000064008518862DFA30D120D629C20A03192F
:100B1000C30F292D051000000611080063008E2D5B
:02400E00613F10
:00000001FF

O funcionamento é simples, ao ligarmos o controlador na tomada, ele inicia mostrando a opção para entrar no menu de opções e se nada for feito, ele entra em modo de operação automaticamente após alguns segundos (para o caso de faltar energia). No menu podemos selecionar o tempo de rega, com o botão 2 aumentando o tempo de 1 em 1s e o botão 3 aumenta em 10s. O botão 1 limpa o tempo e o botão 4 aceita o tempo. A seguir escolhemos o tempo de intervalo, o botão 2 aumenta de 1 minuto e o botão 3 aumenta 10 min e depois passa para horas (o botão 2 passa a aumentar de 5 minutos). De novo o  botão 1 limpa o tempo e o botão 4 aceita o intervalo. Finalmente se tem a opção para iniciar os ciclos com uma rega inicial ou não.  O botão reset sempre reinicializa o controlador, enquanto o botão 4 interrompe o ciclo e volta para o menu. No menu temos a opção para iniciar o ciclo.  Os tempos programados são guardados na memória EEPROM do PIC e portanto são recuperados mesmo com falta de energia.



domingo, 9 de março de 2014

Circuito para testar motores de passo


Eu precisava de um circuito para testar alguns pequenos motores de passo para um novo projeto e resolvi bolar um com velocidade ajustável e escolha do sentido de rotação. Pra facilitar incorporei o circuito de driver para motores unipolares (os bipolares necessitam de ponte H).
O resultado foi esse circuito simples usando um PIC12F629 como gerador da sequência de pulsos, onde um botão controla sequencialmente o período dos pulsos, inciando em 20ms, para 10ms, indo para 100ms e decrescendo em passos de 10ms. O outro botão apenas altera o sentido de rotação.  Os transistores do circuito driver são BC337 para 500mA, portanto não aguentariam motores de maior porte e torque.  A tensão para alimentação do circuito é de 5V e para os motores pode variar até uns 30V.

Segue o esquema, o firmware e duas fotos da montagem numa placa padrão.





















O firmware para o 12F629:
:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0076400A10F152820181E28A01C222844
:1000400000002228080083130313831264000800B1
:1000500007309900831628308500831285011430FB
:10006000B9001030850039080120143085003908A6
:100070000120043085003908012006308500390848
:10008000012002308500390801200330850039083D
:100090000120013085003908012011308500390820
:1000A00001206400851D5D280A30B902640039080A
:1000B0000A3C031D5D286430B9006400851E612878
:1000C000622831281130850039080120013085006F
:1000D00039080120033085003908012002308500ED
:1000E00039080120063085003908012004308500D8
:1000F00039080120143085003908012010308500AE
:10010000390801206400851D8E280A30B902640078
:1001100039080A3C031D8E286430B9006400851E2E
:0A012000922831286228630093281A
:02400E00843FED
:00000001FF


Adendo:
Eu havia colocado o pequeno potenciômetro na plaquinha, mas que estava sem uso. na verdade eu já tinha pensado em fazer um controle analógico tanto para a velocidade como para estabelecer qual o sentido de rotação. Então aqui uma versão com o potenciômetro:

Neste circuito o microcontrolador agora é um PIC12F675 que possui conversor analógico-digital. O programa então foi modificado para ler a posição do potenciômetro (na verdade ele converte a tensão do cursor do potenciômetro) e conforme o valor convertido ele define qual a velocidade e o sentido. A conversão é feita para 8 bits, então temos valores de 0 a 255. Se o valor lido for maior do que 127, então o sentido será um e se o valor for menor do que 128, o sentido será contrário. O valor determina a largura dos pulsos para os passos do motor. Assim quanto mais perto do centro, mais largo deve ser o pulso (faz-se o cálculo 256-valor ou o próprio valor, dependendo do sentido). A largura mínima será de 1ms, a máxima de 127ms.  A chave serve para que o uC efetive a leitura da posição do potenciômetro e movimente o motor no sentido e velocidade desejados.  Há uma mudança no pino de saída para uma das fases em relação ao primeiro esquema. 
O firmware para o 12F675:

:100000003C280F39A0000310A00DA00D1F08E039F7
:10001000200401389F000030A100323023209F14BB
:100020009F181028A1011E083728A301A200FF3045
:10003000A207031CA307031C37280330A100DF30ED
:1000400023201728A101E83EA000A109FC30031CD1
:100050002C28A00703182928A0076400A10F29282D
:1000600020183228A01C36280000362808008313E8
:10007000031383126400080083161830850083126E
:100080000C309F00831638309F0083128501143096
:10009000BA00203085003A081520243085003A083F
:1000A0001520043085003A081520063085003A08EE
:1000B0001520023085003A081520033085003A08E3
:1000C0001520013085003A081520213085003A08B6
:1000D00015206400851D882803300120B9006400C4
:1000E00080303902031C7F2864003908FF3C031D5F
:1000F0007B28FE30B9003908FF3CBA00892864002B
:100100003908003C031D86280130B9003908BA00BF
:100110004928213085003A081520013085003A0829
:100120001520033085003A081520023085003A0872
:100130001520063085003A081520043085003A085D
:100140001520243085003A081520203085003A0813
:1001500015206400851DC82803300120B900640003
:10016000803039020318BE2864003908003C031DA2
:10017000BB280130B9003908BA00492864003908A1
:10018000FF3C031DC528FE30B9003908FF3CBA000A
:0601900089286300C92864
:02400E00843FED
:00000001FF