Hallo Leute.
Ich bin hier grad an einem kleinen Projekt. Dafür brauch ich nen
Schrittmotor der über einen ATmega16 angesteuert werden muss.
Programm:
1 | #define F_CPU 1000000
|
2 | #include <avr/io.h>
|
3 | #include "util/delay.h"
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | DDRB=0xFF;
|
8 | while(1)
|
9 | {
|
10 | PORTB = 0b00000001;
|
11 | _delay_ms(500);
|
12 | _delay_ms(500);
|
13 | PORTB = 0b00000010;
|
14 | _delay_ms(500);
|
15 | _delay_ms(500);
|
16 | PORTB = 0b00000100;
|
17 | _delay_ms(500);
|
18 | _delay_ms(500);
|
19 | PORTB = 0b00001000;
|
20 | _delay_ms(500);
|
21 | _delay_ms(500);
|
22 | }
|
23 | }
|
Müsste ja eigentlich funktionieren.
Jetzt hab ich den ATmega16 auf ein Steckboard gesteckt und mit
stabilisierten 5V versorgt.
PortB 0-3 werden über BC548 mit 2KOhm Basisvorwiderstand verstärkt und
Schalten die - Anschlüsse des Motors. Den Common hab ich an + gelötet.
Problem:
Wenn ich jetzt das Programm übertrage und den Strom einschalte, Springt
der Motor Perfekt auf den ersten und danach auf den zweiten Schritt.
Wenn er jetz aber auf den 3. Schritt Springen soll, klickt es leise am
Motor(er bekommt auch strom) aber erdreht sich nicht weiter. Auf den 4.
Schritt schafft er es aber wieder.
Ich hab alles überprüft d.h. Motor ausgetauscht, Versorgungsspannung
gemessen, Transistoren gemessen und ausgetauscht, Verkabelung überprüft
usw. alles ist o.k. aber beim 3. Schritt klickt es nur leise aus dem
Motor.
An PortB 4-7 Funktioniert das Programm übrigens wenn ich es umschreibe
und den Motor dort anstecke.
Ich hoffe ihr konntet verstehen, was mein Problem ist und hoffe auf
Lösungsvorschläge.
Mit freundlichen Grüßen
Valentin