Linearmotor Ansteuerung
|
28.01.2021, 16:02
Beitrag #1
|
|||
|
|||
Linearmotor Ansteuerung
Hallo ins Forum
![]() ich habe ein kleines Problem mit der Ansteuerung von einem Linearmotor mit Hilfe von 2 externen Endschaltern. Rauf / bzw. Runterfahrt wird über eine Relais Schaltung realisiert. Jetzt habe ich folgendes Problem, dass es im ersten Durchlauf funktioniert, aber nachdem der Motor einmal raufgefahren ist, beim runterfahren der Endschalter ignoriert wird... Hat hier jemand eine Idee, oder kann mich freundlicherweise auf meinen Fehler aufmerksam machen? ![]() Benutzt wird ein normaler Arduino UNO ![]() Code: #include <Wire.h> |
|||
28.01.2021, 16:59
(Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2021 17:00 von MicroBahner.)
Beitrag #2
|
|||
|
|||
RE: Linearmotor Ansteuerung
Code: untenstatus = digitalRead(schalterunten); Das mit dem Interrupt würde ich mir auch nochmal überlegen. Ich weis zwar nicht, wozu der 'Mittelschalter' ist, aber einen einfachen Schalter per Interrupt abzufragen ist nie eine gute Idee ( und auch nie notwendig ). Gruß, Franz-Peter |
|||
28.01.2021, 18:33
Beitrag #3
|
|||
|
|||
RE: Linearmotor Ansteuerung
...
![]() ja manchmal sind doch viele Bäume im Wald, wenn man jetzt den richtigen Status/ Flag einsetzt klappt es auch sehr gut. Vielen Dank ! Zurück zum Interrupt, also gedacht ist wenn ich einen Schalter/ Taster drücke, dass der Motor entsprechend hoch/ runter fährt um in die Mittelstellung zu kommen. Die Mittelstellung ist nötig, wird aber nur bei Bedarf ausgelöst, Problem ist das das Interval hinterher bei ca. 2h liegt, und ich daher an einen Interrupt gedacht. Gibt es hier vielleicht doch noch eine elegantere Lösung? |
|||
28.01.2021, 21:15
Beitrag #4
|
|||
|
|||
RE: Linearmotor Ansteuerung
(28.01.2021 18:33)c0ntem schrieb: Problem ist das das Interval hinterher bei ca. 2h liegt, und ich daher an einen Interrupt gedacht.Interrupts sind genau für das Gegenteil gedacht: bei extrem kurzen Intervallen und wenn es extrem schnell gehen muss. Bei langen Intervallen kann man das bequem im loop abfragen. Schalter prellen, und Interrupts sind so schnell, die lösen bei jedem einzelnen Prellen des Schalters aus. Gruß, Franz-Peter |
|||
29.01.2021, 10:21
Beitrag #5
|
|||
|
|||
RE: Linearmotor Ansteuerung
ah okay, vielen Dank für den Hinweis.
So wie ich die Suche hier im Forum und Google verstanden habe, läuft Millis eh normal weiter, daher würde die Mögichkeit bestehen den Taster ganz normal im Loop abzufragen, auch wenn grade ein "Warteintervall" läuft?! |
|||
29.01.2021, 10:36
Beitrag #6
|
|||
|
|||
RE: Linearmotor Ansteuerung
Ja den Taster kann man immer im loop() abfragen.
Ganz grundsätzlich sollte man 'blockadefrei' programmieren, also den loop nie anhalten, auch während Warteintervallen nicht ( also keine längeren while-Schleifen oder delay() im loop ). Dann kann man jederzeit auf externe Ereignisse reagieren. Gruß, Franz-Peter |
|||
29.01.2021, 10:42
(Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2021 10:45 von Franz54.)
Beitrag #7
|
|||
|
|||
RE: Linearmotor Ansteuerung
"auch wenn grade ein "Warteintervall" läuft?! "
Was ist ein Warteintervall ? Ich nehme mal an, das ist das, was es bei brauchbarer Programmierung nicht gibt? Franz https://www.youtube.com/watch?v=Fnzn85oWM_Q Hier was zum Thema Deutsche Politik ![]() Und hier zum Thema richtige Politik ![]() |
|||
29.01.2021, 17:08
Beitrag #8
|
|||
|
|||
RE: Linearmotor Ansteuerung
Die While Schleife, habe ich bisher nur für das Verfahren des Linearmotors genuzt, danach wäre ja die IF Abfrage über die Millis die der UNO hochzählt.
Zitat:"auch wenn grade ein "Warteintervall" läuft?! " Ja das ist wohl so ![]() Motor verfährt, Endpunkt erreicht -> (Warteinvervall = in meinem Fall 2h) -> Motor in andere Richtung bis Endpunkt, wieder Warten usw. ![]() Und das ganze über einen Taster unterbrechen, damit man Manuel den Motor/rauf/runterfahren kann... Schon mal vielen Dank für diese Einblicke, ich versuch jetzt nochmal die Tasterabfrage zu ändern ![]() |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste