mikrocontroller.net

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


Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

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

Autor: special swine flu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie rechne ich ein Pulsen in Impulse um ? sorry ... my ignorance

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fuer was, zum Biespiel, kann man einen extra Kommunikationskanal 
benutzen?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Waldemar Lederer (Firma: Failsafe Metering) (wwlederer)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.