Forum: Mikrocontroller und Digitale Elektronik Motor steuern, Pulsen zaehlen.


von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Hallo! Ich will einen DC Motor (24V, 60W) steuern (ein/aus). Pulsen von 
3 Naeherungschalter (24V) muessen gezaehlt und verglichen werden. Ich 
habe schon diese Aufgabe mit SPS gemacht. Jetzt will mit einen 
Mikrocontroller probieren. Das ist neu fuer mich. Deswegen Fragen:
1. Welche Mikrocontroller waehlen?
2. Welche Sprache, Compiler benutzen?
3. Wo kann man ein Muster finden? Bezonders interessant, wie kann man 
die Pulsen zaehlen?

Waldemar

von Karl H. (kbuchegg)


Lesenswert?

Waldemar Lederer schrieb:

> 1. Welche Mikrocontroller waehlen?

Das ist ziemlich egal. Nimm einen für den du gute Unterstützung findest. 
Hier im Forum sind AVR sehr beliebt. Da gibt es auch 2 Tutorien dafür: 
eines für Assembler und allgemeine Dinge, ein anderes für die 
C-Programmierung eines AVR

> 2. Welche Sprache, Compiler benutzen?

Welche kannst du denn?
So etwas wie 'die optimale Programmiersprache' gibt es nicht. Die beste 
Programmiersprache ist immer die, die man bereits kann :-)

> 3. Wo kann man ein Muster finden? Bezonders interessant, wie kann man
> die Pulsen zaehlen?

Deinen Fragen nach zu urteilen: Das von dir gewählte Beispiel ist noch 
zu schwierig für dich. Wenn du mit µC anfangen willst, dann fang vorne 
an und steig nicht mitten in der Lernkurve ein. Vorne anfangen heißt: 
Einen Pin gezielt auf 0/1 setzen (um damit zb eine LED ein/aus zu 
schalten) etc. Das volle Programm, von der Pieke auf.

Aber um auf deine Frage einzugehen:
Wodurch ist denn ein Puls charakterisiert?
Wohl dadurch, dass das Eingangssignal in einem bestimmten Moment logisch 
0 ist und im nächsten Moment ist es logisch 1. Alles was man tun muss, 
ist daher diesen Übergang festzustellen. Das kann man jetzt zb auf 
vielen AVR auf verschiedene Arten machen
zb durch Polling: Dein Programm sieht sich zb alle 1 ms den Eingang an. 
Ist er 0 und 1ms später ist er 1, dann hat in dieser Millisekunde ein 
Puls begonnen
Man kann dieses Erkennen der Flanke aber auch der Hardware überlassen. 
Tritt eine Flanke auf, wird ein Interrupt ausgelöst
Eine andere Möglichkeit wäre es einen Timer einzusetzen. Der kann 
ebenfalls auf externe Signale reagieren und übernimmt auch gleich noch 
das Zählen der Pulse. Und optional kann der auch bei bestimmten 
Zählerständen einen Interrupt auslösen lassen.

Möglichkeiten gibt es mehrere. Aber zu lernen beginnt man bei einem µC 
mit dem Klassiker: Led ein - Led aus

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Vielen Dank fuer die Antwort Karl Heinz.
Mit AVR (und manche anderen) LED ein LED aus habe ich schon gespielt. 
Vor 10 Jahren studierte C++ an einer Universitaet. Also welche AVR? Ist 
Kauf von STK500 (oder aehnliches) sinnvoll? Und welche Compiler: GCC, 
CodeVision, ImageCraft oder ..?
Es gibt manche "halb fertige" Loesungen z.B.: AVRopendous, mChameleon, 
Arduino, alle mit eingebauten USB Connector. Passen sie fuer diese 
Aufgabe?

von Gast (Gast)


Lesenswert?

Karl-Heinz war ja mutig, auf die unkonkrete Fragestellung einzugehen.

Welche Funktionen laufen jetzt auf der SPS ab?
Ganz konkret: was macht der Motor? ein-aus, vorwärts-rückwärts, ...?
Was sind das für Impulse? Frequenz, Pegel, Phasenversatz? Und in welcher 
Verbindung stehen diese Impulse zum Motor?

µC und der Rest sind erst einmal völlig egal!

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Motor dreht eine Flussigkeitdispensierunganlage,immer vorwaerts. Erste 
Sensor zeigt nur Winkel (z.B. die Menge von Wellehalbrotationen. Zweite 
und dritte Sensoren zeigen ob die Fluessigkeiten 1 und 2 wirklich 
dispensiet wurden, gab es einen Puls- bedeutet Ja,gab es kein Puls - 
Nein. Pulsen von Sensor 1 muessem gezaehlt werden um den Motor in 
richtigen Zeit auszuschalten. Pulsen von Sensoren 2 und 3 - um zu 
entscheiden ob alles richtig gelaufen. Alle sensoren 24V DC, maximum 
Frequenz - 20Hz.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Die Pulsen sind von 0V bis 24V (Amplitude), Die Laenge von einigen mSec 
bis 100 mSec (haengt von Geschwindigkeit ab). Typische Anwendung:  die 
Zweikomponentklebstoffdispensierungsanlagen, wo wichtig ist nicht nur 
die gesamte Menge, aber auch die Proportion von Komponenten. Operator 
waehlt N (Zahl von Pulsen entspricht Menge von Klebstoff.)und drueckt 
einen Schalter.Wenn Sensor 1 zeigt N1=N, Motor automatisch aus. Wenn 
alles gut: N=N1=N2=N3, dann gruene LED ein, wenn nicht dann rote LED 
ein.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Bitte um die Entschuldigung, nicht Sensor zeigt aber entsprechende 
Zaehler.

von special swine flu (Gast)


Lesenswert?

wie rechne ich ein Pulsen in Impulse um ? sorry ... my ignorance

von Gast (Gast)


Lesenswert?

Deine Problemstellung scheint einfacher Natur zu sein. Somit könntest Du 
fast jeden µC verwenden, aber in jedem Fall mußt Du Dich einarbeiten. 
Dafür ist ein "Komplettpaket" aus Board und dazu passendem C-Compiler 
sehr sinnvoll. Persönlich kenne ich es nicht, aber ein STK500+GCC sollte 
ein brauchbarer Ansatz sein, zu dem Du hier im Forum gute Unterstützung 
bekommen kannst.

Arduino kenne ich auch nicht (ist wohl auch AVR), würde sich aber dann 
anbieten, wenn schon eine Ansteuerung für den Motor und passende 
Eingänge für die Sensoren als Hardware angeboten werden.

Ausgehend von einem AVR-Entwicklungsboard brauchst Du für die 
Sensoreingänge eine Schaltung, die die 0-24V Pegel auf 0-5V herabsetzt. 
Mit der Suchfunktion findest Du hier etliche Vorschläge für 
Pegelkonverter.

Für den Motor brauchst Du einen Leistungsschalter, der den Motor 
ein-Auschalten kann. Hierfür biete sich ein FET IRLZ34N an, der mit 
einer Freilaufdiode geschützt wird.

Den Motor zu schalten, übernimmt ein Pin vom µC. Ganz einfach wie eine 
LED.
Die Sensorsignale werden wie Taster/Schalter per Software entprellt und 
entweder ein Zähler damit hochgezählt oder als Status ausgewertet.

Mit dem Zählerstand und dem Status der Sensoren kannst Du dann Deine 
bisherige Logik nachbilden und davon abhängig den Motor oder LEDs 
ansteuern.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

special swine flu schrieb:
> wie rechne ich ein Pulsen in Impulse um ? sorry ... my ignorance


Sehr einfach: ein Puls = ein Impuls. Die Spannung lauft von 0V bis 24V 
DC, nach einige Zeit zurueck bis 0V.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

>
> Für den Motor brauchst Du einen Leistungsschalter, der den Motor
> ein-Auschalten kann. Hierfür biete sich ein FET IRLZ34N an, der mit
> einer Freilaufdiode geschützt wird.

Vielen Dank fuer die Antwort.
Es scheint mir, dass FET Transistoren mehr als 5V fuer Kontrol brauchen. 
Kann man IRLZ34N direkt zu einem Ausgang von Mikrocontroller 
anschliesen, oder muss man ueber einen sonder Treiber besorgen?

von Gast (Gast)


Lesenswert?

> ... mehr als 5V

Nein, dieser nicht. Das Gate kann man direkt an einen Ausgang des µC 
anschließen. Elegant wäre es dafür einen Ausgangspin zu verwenden, der 
auch ein PWM-Signal erzeugen kann (OCxx bei AVR). Für die ersten 
Schritte ist das zunächst ohne Bedeutung. Wenn man später den Motor 
sanft einschalten möchte, könnte man dies ergänzen.

Eine Frage stellt sich mir jedoch noch: brauchst Du ein Einzelstück, 
eine kleinere Stückzahl oder viele dieser Schaltungen?

Das Einzelstück hast Du ja schon. Für eine kleinere Stückzahl gäbe es 
kostengünstige kleine Steuerungen (Logo oder ähnlich). Und für größere 
Stückzahlen wäre es sinnvoll, jemanden mit der Entwicklung zu 
beauftragen, der Schaltung und Programm sehr schnell fertigstellen kann.

Wenn es aber für eigenen Spaß und eigenes Erfolgserlebnis sein soll, 
dann ist es gut, es auch selber zu machen.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Zuerst brauche ich nur ein Prototyp bauen. Wenn es lauft, dann kleinere 
Stuchzahl. Mit SPS funltioniert gut. Ich habe mit Twido(Schneider) und 
FX2N (Mitsubishi) probiert. Beide sind zu gross fuer eine miniature 
Anlage. Mit Siemens Logo arbeitete ich noch nicht, aber es hat aehnliche 
Groesse wie Twido.
Wenn Arduino passt, ist alles einfacher.Kann man passende Display in 
eBay billig kaufen. Man braucht nur wenig extra PCB Design 
(Pegelwandler, ein paar Transistoren, Relay..). Und gibt es manche PCB 
Beispiele in Eagle Format in Internet.
Also, Arduino?

von Gast (Gast)


Lesenswert?

>Also, Arduino?

Das mußt Du entscheiden!
Selber würde ich einen ATtiny2313 oder ATmega8/48 einsetzen, um mit dem 
UART noch einen Kommunikationskanal in Reserve zu haben. Im Prinzip 
ginge auch ein ATtiny13 oder ..45, oder ...

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Fuer was, zum Biespiel, kann man einen extra Kommunikationskanal 
benutzen?

von Gast (Gast)


Lesenswert?

Zum Beispiel um per PC (Terminal) den µC zu konfigurieren (Konstante ins 
EEPROM schreiben) oder den aktuellen Zustand (start - läuft - fertig) 
oder Zählerstand abzufragen.
Wenn Du es nicht brauchst, lasse es weg!

Ich habe mich einmal schlau gemacht: der Arduino beruht auf dem 
ATmega168. Das ist die größere Version der von mir genannten ATmega8/48.

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Eigentlich auf einem Breadboard funktioniert. Ich habe die Funktion 
pulseIn() benutzt. Bin nicht sicher, ob das die richtige Loesung ist.
 In jeder Fall, wie kann man einen Display hinzufuegen, um die Menge von 
gezaehlten Pulsen zu zeigen. Kann jemand mir einen Tip geben?

von Waldemar L. (Firma: Failsafe Metering) (wwlederer)


Lesenswert?

Hallo! Wie kann man Daten in Arduino Memory screiben? Zur Zeit erinnert 
es nicht, was bevor die Ausschaltung war. Wie kann man das machen, 
EEPROM oder .. ?
Wo kann man ein Beispiel finden?

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.