Hallo, ich habe folgendes Problem: Ich entwickle/bastle/baue gerade ein Projekt mit dem Arduino und möchte einen Interrupt verwenden, dieser Interrupt kommt von einer Lichtschranke, die mit 10-30V arbeitet. Bisher habe ich die Lichtschranke mit 12V betrieben und für den Interrupt einfach einen Spannungsteiler (10/6.8 Kiloohm) verwendet, funktioniert soweit auch problemlos. Nun möchte ich aber das ganze Projekt so gestalten, dass ich es mit 12 oder 24V betreiben kann. Von dieser Spannung aus würde ich über so ein kleines "buck converter" Modul die 5V für den Arduino erzeugen.. hier schonmal die Frage: geht sich das mit so einem kleinen Modul von der Leistung her aus, oder wird das zu schwach? https://www.amazon.de/WINOMO-1-23-30V-DC-Einstellbare-Spannung-Konverter/dp/B01B7EEWGK/ref=sr_1_3?ie=UTF8&qid=1505679764&sr=8-3&keywords=step+down am Arduino hängt noch ein LCD Display(glaube um die 50mA), ein GPS Modul (ca. 20mA) und ein Relay(ca. 50mA). ------------------------------------------------- Nun die zweite Frage Kann ich, um den Interrupt für den Arduino zu erzeugen (also von 12-24V auf 5V) einen Optokoppler verwenden ...oder einen LM7805.. oder gibt es da eine 'Standardlösung') eine eventuelle kleine Verzögerung <10ms ist egal Ich hatte mir schonmal überlegt einfach einen 'variablen Spannungsteiler' mit einem Schalter zu basteln.. nur ist mir das zu gefährlich da das Projekt auch andere Leute verwenden werden. Auch hatte ich mal überlegt, die 12-24V gleich beim Eingang mit einem Buck Converter Modul auf 10V zu bringen, dann aufteilen zwischen Lichtschranke und Arduino, fixer Spannungsteiler für den Interrupt... wäre dies die bessere Lösung? PS. ich bin weit entfernt von fortgeschritten in dem Gebiet,daher bitte um Nachsicht Danke im Vorraus, Thomas
Wie wäre es mit einem Serienwiderstand und den int. Schutzdioden zu clampen?
kannst du mir das bitte etwas genauer erklären, bzw. gibt es da im Internet etwas zum nachlesen? ... habe schon irgendwo gelesen dass man die Spannung mit Dioden begrenzen kann, nur weiß ich leider nicht genau wie, bzw. nicht genau nach was ich suchen muss.
Thomas S. schrieb: > kannst du mir das bitte etwas genauer erklären, Als ESD-Schutz sind bei den IC-Eingängen zu VCC (und zu GND) Dioden verbaut. Die kann man zweckentfremden, wenn man den Strom durch einen Vorwiderstand begrenzt leiten sie bei höheren Eingangssignalen den Strom zu VCC ab. Leider sind diese Dioden selten spezifiziert, einige mA gehen aber fast immer. Nimm doch einfach deinen 12V Spannungsteiler und bau selber eine Schottky-Diode zur Arduino-VCC dazu. Jetzt muss nur noch dein oberer Teilerwiderstand den Strom aushalten (bei 24V sind es (24V-5V)/10k, kein Problem). Der Stromverbrauch der Arduino-Schaltung muss aber höher sein, als diese 1.9mA! Auch eine 5.1V Z-Diode parallel zum unteren Teilerwiderstand ist ein andere Alternative - ein 7805 jedoch eher nicht.
Diese Frage wird hier gefühlt jede Woche erneut gestellt. Offensichtlich ist es zu schwierig, die Antworten bzw. Artikel per Suchfunktion wieder zu finden. Ich habe den Artikel selbst nicht mehr wieder gefunden, bin aber ziemlich sicher, daß wir dazu mal was hatten. Wer weiss, wie der Artikel hiess?
Thomas S. schrieb: > https://www.amazon.de/WINOMO-1-23-30V-DC-Einstellbare-Spannung-Konverter/dp/B01B7EEWGK/ref=sr_1_3?ie=UTF8&qid=1505679764&sr=8-3&keywords=step+down Nimm besser nen 3-Pinner von Recom oder Traco, z.B.: https://www.reichelt.com/de/en/Converter-higher-3-W/R-78E50-10/3/index.html?ACTION=3&GROUPID=7255&ARTICLE=177268 https://www.conrad.de/de/dcdc-wandler-print-recom-r-78e50-05-24-vdc-5-vdc-500-ma-anzahl-ausgaenge-1-x-157954.html
Versorgung: Wenn der Konverter den benötigten Strom bei den gewünschten Eingangsspannungen liefern kann, ja klar. Interrupt: Nimm einen Vorwiderstand und eine Z-Diode. Billig, einfach, ...
Norbert schrieb: > Nimm einen Vorwiderstand und eine Z-Diode. Billig, einfach, ... und die Zeichnung ... R1=2k2? Fast 10mA würde ich der Signalquelle nicht abverlangen wollen, kann die das überhaupt? HildeK schrieb: > Auch eine 5.1V Z-Diode parallel zum unteren Teilerwiderstand Ich wollte den unteren Teilerwiderstand absichtlich mit drin haben, weil damit auch der LOW-Pegel (wie groß ist der max. bei dem vorhandenen Signal?) geringer wird. LOW-Störabstand. Sollte der zuverlässig <0.8V sein, braucht man den natürlich nicht.
HildeK schrieb: > Norbert schrieb: >> Nimm einen Vorwiderstand und eine Z-Diode. Billig, einfach, > ... und die Zeichnung ... > R1=2k2? Fast 10mA würde ich der Signalquelle nicht abverlangen wollen, > kann die das überhaupt? Ich weiß das nicht, sag du es mir ;-) Da wir beide nur vermuten können, hab' ich hier einfach nur einen unspektakulären Schätzwert genommen.
Und schon sind wir schon wieder dabei, Lösungsvorschläge zu posten, ohne zu wissen, ob sie überhaupt geeignet sind. Egal ob Zenerdiode, Spannungsteiler, Optokoppler, Transistor (oder was auch immer). Es kommt immer auch auf die Signalquelle an und die erwarteten Störungen, die man bei der gelegenheit auch gleich mit lsowerden möchte. Darüber sollten wir zuerst diskutieren. Ansosten: Ich kann auch mit einer Boeing Zigaretten kaufen gehen. Funktioniert ganz bestimmt - ist trotzdem keine kluge Idee.
Nun, zum aktuellen Stand der Dinge/Informationen ist die Aufgabenstellung gelöst. <-PUNKT. Warum sollten wir über andere Dinge diskutieren? Wenn/falls irgendwann später Innenwiderstand, Strombegrenzung, Flankensteilheit, usw. eingebracht werden, kann sich das ändern.
Danke schonmal an alle für die vielen Ideen! .. wäre es die bessere (oder zumindest eine sinnvolle) Lösung die 12-24V immer auf 10V zu bringen (also gleich am Eingang) und dann je ein Kabel zu Lichtschranke und Arduino (mit 5V buck converter davor)? und dann ein Spannungsteiler für die 10 zu 5V für den Interrupt Ps. heute abend poste ich hier einen Link zum Datenblatt der Lichtschranke, habe ich leider gerade nicht zur Hand
> Norbert schrieb: > Nimm einen Vorwiderstand und eine Z-Diode. Billig, einfach, Alles Kasperei: Einen NPN-Transistor BC_irgendweas mit 12k-Widerstand vor der Basis, fertig. Ob der nun ein oder zwei Basisstrom bekommt, ist egal und man hat ihn sowieso in der Schublade. Ob er Interrupt bei high oder low stattfindet, macht die Software.
Und ich frage mich, wozu überhaupt einen Interrupt ?
da ich im Interrupt ein boolean-flag setzen muss, und der normale loop dafür zu langsam ist
Manfred schrieb: >> Norbert schrieb: >> Nimm einen Vorwiderstand und eine Z-Diode. Billig, einfach, > > Alles Kasperei: Einen NPN-Transistor BC_irgendweas mit 12k-Widerstand > vor der Basis, fertig. Ob der nun ein oder zwei Basisstrom bekommt, ist > egal und man hat ihn sowieso in der Schublade. > > Ob er Interrupt bei high oder low stattfindet, macht die Software. Na endlich einer der wirklich Ahnung hat und uns allen zeigt wie's auf die einzig richtige Art gemacht wird.
Thoma Sallaberger schrieb: > da ich im Interrupt ein boolean-flag setzen muss, und der normale > loop dafür zu langsam ist Wieso ist die Loop zu langsam ? Und was ist bei dir die "normale Loop" ? Da du uns deinen Sketch nicht zeigst, können wir dir auch nicht helfen. Was macht denn deine Loop so langsam ?
Meinen loop muss es schaffen ~2 mal in der Sekunde 'abzuwerfen', außerdem brauche ich den Interrupt, da die Köder nur sehr sehr kurz die Lichtschranke aktivieren. kurze Erklärung drumherum Es geht darum, das aus einem Flugzeug Köder abgeworfen werden (Hardware dazu bereits vorhanden, funktioniert tadellos), dies geschieht bei Fluggeschwindigkeit 180km/h, die Genauigkeit soll +/-5m betragen Der Abstand soll mit 2 Schaltern einstellbar sein. Auf dem LCD Display sollen gewünschte (noch nicht fixe Daten) dargestellt werden, wsl. der Abstand, die Uhrzeit, irgend sowas. Bei jedem Abwurf sollen die Daten auf einer SD Karte gespeichert werden. PS. das ganze funktioniert im 'Autotest' (man hat nicht immer ein Flugzeug parat) schon sehr gut, bei gleichbleibender Geschwindigkeit +-1m Beim Beschleunigen z.b. werden die Abstände zu lang, was jedoch beim Flugzeug kein Problem sein wird, da dieses nicht so schnell beschleunigen kann. Ich habe nun einen Screenshot aus Fritzing, einen Schaltplan, und den Sketch (ich weiß, derzeit noch sehr sehr hässlich, aber funktioniert) hinzugefügt. Hier der Link zur Lichtschranke http://at.rs-online.com/web/p/optische-naherungsschalter/3146036/
> Meinen loop muss es schaffen ~2 mal in der Sekunde 'abzuwerfen', In zwei Sekunden führt ein durchscnnittlicher Mikrocontroller 20 bis 200 Millionen Befehle aus. Das ist quasi eine Ewigkeit. Wenn du mit einem derart entspanntem Timin schon Probleme hast, muss ein ganz gravierender Designfehler im Programm vorliegen. Wenn du das nicht in Ordnung bringst, wird jede Erweiterung warscheinlich zu neuen Problemen führen. Lies dich mal zum Thema Zustandsautomat ein. Zum Beispiel indem du mit dem ersten Kapitel auf dieser Seite beginnst: http://stefanfrings.de/net_io/protosockets.html
Das der Arduino grundsätzlich die Berechnung leicht schafft ist mir bewusst, nur braucht der LCD soweit ich es im Kopf habe nach jedem Update ein delay, und wenn blöderweise genau in der Zeit ein Köder die Lichtschranke auslöst dann wird dieser übersehen, oder liege ich da falsch? Ich könnte natürlich z.B. mit einem Attiny die Lichtschranke überwachen, möchte aber lieber alles mit dem Arduino machen.
"...nur braucht der LCD soweit ich es im Kopf habe nach jedem Update ein delay,..." Da wird der Hase im Pfeffer liegen. Ein Delay kann man erzeugen, indem man zigtausendmal im Kreis springt (Wait-Funktion) und sonst nix tut... quasi Rechenzeit vergeudet. Das wendet man nur an, wenn Zeit keine Rolle spielt, oder man schnell provisorisch etwas austesten will. Eine andere Möglichkeit ist, einen Task (z.B. LCD) nur bei jedem n_ten Programm-Durchlauf zu aktivieren (Bypass-Methode), damit ein Modul zwischenzeitlich seine geforderten Pausen hat. Dadurch steht die Rechenzeit den anderen Programmteilen zur Verfügung. Das ist angesagt, wenn das Delay zeitlich unkritisch ist und eine gewisse Varianz desselben unerheblich ist. Die dritte, zeitlich präzise Methode, ist, den timing-relevanten Teil per Timer-Interrupt, oder Polling eines Timer-Flags einzubinden. Damit wird weder kostbare Prozesszeit "verwartet", noch muss man durch veränderliche Laufzeiten eine Varianz (Auslösung u. Dauer) des Delays in Kauf nehmen. Ersetze alle Delays, die nach der ersten Methode arbeiten, durch solche, die die Rechenpower freigeben, dann hast du neben dieser Popelaufgabe der Dosierung noch jede Menge Zeit, um noch nebenher z.B. Statistik auf dem Display anzuzeigen, etc...
achso danke für den Tipp!... ich hatte da wohl einen Fehler in meiner Überlegung und dachte man muss ein 'normales' delay verwenden
Die kommunikation mit dem Display darf beliebig verzögert werden. Die Erfassung des Köders möchtest du aber möglichst ohne Verzögerung. Für sowas würden Interrupts erfunden. Jetzt musst du dir nur noch überlegen, wer hier wen unterbrechen soll. Du schaffst das!
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.