Bezug nehmend auf: [HW] Motor Module
Diese Bibliothek enthält Funktionen zur Steuerung der verschiedenen HomeLab Motoren. Sie enthält Funktionen für Gleichstrom- (DC-), Schritt- und Servomotoren,
Initialisiert einen der Controller für die DC Motoren. Parameter:
Betriebt einen der Controller der DC Motoren. Parameter:
Initialisiert den Controller eines der unipolaren Schrittmotoren. Parameter:
Befehl zum Halbschrittbetrieb für unipolaren Schrittmotor. Die Funktion ist blockierend bis sie erfüllt ist, bis alle Schritte durchgeführt wurden. Parameter.
Initialisiert den Controller des bipolaren Schrittmotors.
* **//void bipolar_halfstep(signed char direction, unsigned short num_steps, unsigned char speed)//** \\ Befehl zum Halbschrittbetrieb für bipolaren Schrittmotor. Die Funktion ist blockierend bis sie erfüllt ist, bis alle Schritte durchgeführt wurden. Parameter: * //direction// - Rotationsrichtung . -1 oder +1. * //num_steps// - Zählen der Halbschritte. * //speed// - Zeit eines einzelnen Schritts in Millisekunden.
Initialisiert eine der PWM Signal-generierenden Einheiten eines Servomotors des ATmega128 Timers 1. Das PWM Signal beträgt 50 hz bei einer high period of 1.5 ms ± 0.5 ms. Parameter:
Takt des Servomotors mit Kontrollbefehl. Die Position eines Servomotors verändert sich wenn dieser betrieben wird. Wird er gedreht, verändert sich seine Drehzahl. Parameter:
Nutzung von Gleichstrom- (DC-), Schritt- und Servomotoren.
#include <homelab/module/motors.h> int main(void) { // Initialisierung der DC Motoren. dcmotor_init(0); dcmotor_init(1); // Initialisierung des bipolaren Schrittmotors. bipolar_init(); // Initialisierung der Servomotoren. servomotor_init(0); servomotor_init(1); // Ein DC Motor fährt vorwärts, ein anderer rückwärts. dcmotor_drive(0, -1); dcmotor_drive(1, +1); // Bewegt den Schrittmotor 100 Schritte in eine Richtung // und daraufhin zurück mit doppelter Geschwindigkeit. bipolar_halfstep(1, 100, 50); bipolar_halfstep(-1, 100, 25); // Bewegt Servomotoren in entgegengesetzte Richtungen. servomotor_position(0, -100); servomotor_position(1, +100); }