Forum: Mikrocontroller und Digitale Elektronik Atmega16 vergisst beim Schrittmotor den 3. Schritt (C)


von Valentin S. (lochrasterer)


Lesenswert?

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

von Guess (Gast)


Lesenswert?

Klingt so, als wenn PB2 kaputt ist und nicht mehr genug Strom liefert um 
den Transistor richtig durchzuschalten? Vielleicht geht PB2 noch als 
Input?

von spess53 (Gast)


Lesenswert?

Hi

Mal unabhängig von deinem Portproblem.

>Müsste ja eigentlich funktionieren.

Kommt auf deinen Motor an. Aus deiner Beschreibung erahne ich einen 
unipolaren Schrittmotor. Mit deinen Bitmustern bestromst du aber immer 
nur eine Spule. Üblich sind zwei. Dazu müssten deine Bitmuster so

1 - 0101
2 - 0110
3 - 1010
4 - 0110

aussehen. Deine Ansteuerung funktioniert zwar auch, aber nur mit der 
halben Leistung.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.