PWM über Seriellen Monitor

Hallo zusammen,

wir haben bereits einige Produkte in unserem Portofolio die es ermöglichen Schritt- oder Gleichstrommotoren mit mehreren Kanälen am Arduino zu betreiben. Heute möchte ich einen Betrieb eines 12V Motors an einem Arduino zeigen. Im Prinzip kann damit jeder Verbraucher der über PWM gesteuert wird angeschlossen werden, so z.B. auch eine LED. Die Geschwindigkeit oder Helligkeit kann über den Seriellen Monitor geregelt werden. Eine Umsetzung des Projekts ohne Library ist möglich bietet jedoch auch Nachteile. Ein wesentliches Problem bei der manuellen Umsetzung ist die Auslastung des Controllers weshalb wir Ihnen heute diese Library vorstellen möchten:

https://github.com/HobbyComponents/HCMotor

Diese (und andere Motor-Librarys) bieten quasi die Möglichkeit den Motor "im Hintergrund" laufen zu lassen, d.h. den Controller damit nicht zu blockieren damit unser UNO noch andere Aufgaben verrichten kann.

Wie man die Library installiert haben wir bereits in vielen Blogbeiträgen gezeigt.

Um für unseren Lüfter ausreichend Strom zur Verfügung zu haben und den UNO nicht zu beschädigen nutzen wir das MOS-Modul mit IRF520.

Die Verdrahtung:

Die drei Pins des MOS-Moduls wird an den UNO angeschlossen, Stromquelle und den Lüfter an die Schraubklemmen:

 UNO MOS-Modul Netzteil Verbraucher
5V VCC
GND GND
D6 Sig
VIN 12V
GND GND
V+ +
V- -

 

Hier der Code:

 

#include "HCMotor.h"
#define MOTOR_PIN 6 //PWM-Pin
  
HCMotor HCMotor;
 
void setup(){
  Serial.begin(9600);
  HCMotor.Init();
  HCMotor.attach(0, DCMOTOR, MOTOR_PIN);
  HCMotor.DutyCycle(0, 100); //minimale 0 und maximale Geschwindigkeit 100
}
  
void loop(){
  
  while(Serial.available() > 0){
    
    int value = Serial.readString().toInt();
    int motorSpeed = map(value, 0, 1024, 0, 100);
    HCMotor.OnTime(0, motorSpeed);
  }
}

 

Viel Spass beim experimentieren!

Letzter Artikel "Nokia"-Display am NanoV3
Neuer Artikel I2C für analoge Sensoren mit dem ADS1115

Kommentar

Moritz - Juni 5, 2019

Hallo,
ich denke es ist immer schwierig das richtige Niveau für die Artikel zu finden. So wie ich das verstanden habe will AZ mit den Artikeln die Leute für Mikrocontroller begeistern und zur Umsetzung eigener Projekte anregen. Alle Sachen die ich hier im Blog gefunden habe funktionierten auf Anhieb, das ist recht selten. Interne Timer und Register sind nicht besonders anfängerfreundlich. Sieht einfach aus, ist es aber nicht….

Matthias Jacobsen - Juni 5, 2019

Moin,
Prinzipiell finde ich ihren Beitrag sehr gut.
Erwähnenswert wäre, dass die Benutzung des internen Timermoduls. Dieser lässt sich als pwm Generator parametrisieren und dies benötigt auch nur ca. 3 Zeilen Code.
Damit läuft der pwm Generator im Hintergrund und blockiert die Main nicht.

Es ist zwar schön wenn einem Librarys die Arbeit abnehmen und Mann nicht weiß was diese tun.

Gruß
Matthias

Ljubomir Madzarac - Juni 7, 2019

Monitor ??? Motor :-)

Norbert - Juni 5, 2019

Vielen Dank das Du dein Wissen mit uns teilst.
Jedoch wären im Programm einige Erklärungen hilfreich, da ich trotz ein wenig
Programmierkenntnis da nicht so viel verstehe.
Wo ist denn der Wert der den Motor (soll warscheinlich der erwähnte Lüfter sein) Steuert?

Ihr Programmierprofis setzen häufig zuviel als selbstverständlich voraus, und hängt dann die lernwilligen ab, schade.

Hinterlasse einen Kommentar

Kommentare müssen vor der Veröffentlichung überprüft werden

Erforderliche Angabe