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
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
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?
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!
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.
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.
Bitte um die Entschuldigung, nicht Sensor zeigt aber entsprechende Zaehler.
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.
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.
> > 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?
> ... 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.
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?
>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 ...
Fuer was, zum Biespiel, kann man einen extra Kommunikationskanal benutzen?
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.