Ovládání krokových motorů přes AT89C2051 nefunguje

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
frenkie1988
Příspěvky: 1
Registrován: 14 dub 2010, 02:00

Ovládání krokových motorů přes AT89C2051 nefunguje

#1 Příspěvek od frenkie1988 »

Dobrý den. Mám menší problém. Zadání mé úlohy je ovládat dva krokové motory přes mikrokontrolér AT89C2051. Jedná se o polohovací zařízení na kameru. Mám 4 tlačítka na vstupu připojené na bránu P3 (leva - P3.3, prava - P3.2, nahoru - P3.1, dolu - 3.0). Je to zapojené tak, že na vstupu daného portu je vždy log.1, po stisku tlačítka se obvod uzavře přes indikační diodu a předřadný odpor 220ohm k zemi a na vstupu se objeví log.0. Tato část funguje. Problém ovšem nastává na výstupu. Pro zkoušku je nahrán program na střídání log.1 a 0 na jednotlivých bitech portu P3.

Projekt se skládá ze dvou plošných spojů. Jeden řídící (na obrázku vlevo od Atmel) a výkonovou část (vpravo od Atmel) a je to propojeno přes svorkovnice. Tento program oživí Atmel pouze na 6 z 8 bitů portů brány P3. Střídavě má vždy cca 2s log1 a 0. Kromě dvou P1.0 a P1.1. Ovšem když připojím výkonovou část s tranzistory, tak na výstupu je stále 0,6V. Kromě tedy zase té P1.1,P1.0.

Když byl nahrán program na řízení motorů tak na P1.4-P1.7 při držení tlačítka se napětí na výstupu pohybovalo vždy mezi 0,2 - 0,4V. Bylo viditelné okem na měřáku, tedy zpoždění by mělo být v pořádku. Při stisku myslím 2 tlačítek napětí také skákalo mezi 0,2 až 0,4 ale vždy se jednou vrátilo na 0 a podruhé na 0,6V asi.

Mám dva mikroprocesory. Jeden jsem zjistil že je asi vadný, ale zkoušel jsem to i s druhým novým a pořád to samé.

Krokové motory jsou použité z tiskáren HP deskjet 690c. s označením PM35L-048-HPD4. Má 5 vývodů, řízení unipolární, podle popisu výrobce napájen 24V DC.

Nemáte někdo nějakou radu kde by mohl být problém? Po pár debatách jsme usoudili jestli použité tranzistory nejsou pořád sepnuty k zemi a nebo je třeba nahradit Darlingtonovým zapojením (např. TIP122).


Předem děkuji za rady.


schéma zapojení:

[img=http://www.freeimagehosting.net/uploads/th.74f9cf2e47.jpg]


zde je program na řízení motorů, jestli je úplně dobře zatím netuším, nespínají ty tranzistory.

include REG51.INC

org 0
sjmp start


org 30h
start:
clr P3.7 ;rozsvícení diody napajájecí:

testovani_vstupu:

jnb P3.3,LEVA ;jump if not bit
jnb P3.2,PRAVA
jnb P3.1,NAHORU
jnb P3.0,DOLU

sjmp testovani_vstupu;

LEVA:
mov P1,#00000011b ;1,3 – L 2,4 - P
acall zpozdeni
mov P1,#00000110b
acall zpozdeni
mov P1,#00001100b
acall zpozdeni
mov P1,#00001001b
acall zpozdeni
sjmp testovani_vstupu

PRAVA:
mov P1,#00001001b
acall zpozdeni
mov P1,#00001100b
acall zpozdeni
mov P1,#00000110b
acall zpozdeni
mov P1,#00000011b
acall zpozdeni
sjmp testovani_vstupu

NAHORU:
mov P1,#00110000b
acall zpozdeni
mov P1,#01100000b
acall zpozdeni
mov P1,#11000000b
acall zpozdeni
mov P1,#10010000b
acall zpozdeni
sjmp testovani_vstupu

DOLU:
mov P1,#10010000b
acall zpozdeni
mov P1,#11000000b
acall zpozdeni
mov P1,#01100000b
acall zpozdeni
mov P1,#00110000b
acall zpozdeni
sjmp testovani_vstupu ;short jump – po projeti cyklu testuje zda je ještě „0“

zpozdeni: mov r3,#5
cek2: mov r2,#100
cek1: mov r1,#150
djnz r1,$
djnz r2,cek1
djnz r3,cek2

ret ;vyskočení z podprogramu
end ;ukončení programu

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#2 Příspěvek od ZdenekHQ »

P1.0 a P1.1 vyžadují externí pull-up odpory kvůli internímu komparátoru .

Měl bys nejspíš nějak definovat stav P1 po startu a po vyskočení z jednotlivých podprogramů.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
Standa33
Příspěvky: 283
Registrován: 07 lis 2009, 01:00

#3 Příspěvek od Standa33 »

Zkus na výstupy uP připojit jen (8x LED s odpory), zpozdeni nastav na cca 1s. Každý stav pak bude "vidět" po dobu 1s - otestuješ funkce programu.

Poté zapoj žárovky do kolektorů tran. - otestuješ zda správně spínají tranzistory.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“