Hallo. Dieses spezielle Problem wollte ich in einem eigenständigen Thema abarbeiten, da es für mich weitaus komplexer ist und nicht untergehen darf: Nun tauche ich doch viel weiter in die Mikrocontroller-Welt ab, als ich das ursprünglich vor hatte. Das ist anscheinend wie ein Sumpf. Mit dem Erstellen der LED-Bargraph-Anzeige habe ich den Controller nur zu 30% genutzt, was die Pins angeht, und ich muss einem von euch recht geben: Für unbenutzte Pins gibts kein Geld zurück. Mir schweben nun 2 Sachen vor, die ich gern realisieren möchte: Zum Einen möchte ich gern PWM-Signale einer Fernsteuerung überwachen. Die Schaltschwelle ist dabei extrem groß, da es sich nicht um einen Proportinponskanal handelt, sondern um einen reinen Schaltkanal. Das sollte die Sache einfacher machen. Ich möchte dabei eine Wasserpumpe sowie die Rundum-Beleuchtung ansteuern können. Wie muss ein PWM-Auswertepfad aussehen? Leider habe ich nur ein digitales Multimeter, dass zwar Frequenzen messen kann, ich aber nicht weiß, wie es mit Rechtecksignalen einer PWM ausschaut. Ideen eurerseits und wie sollte der Programmpfad ausschauen? Kann ich den Programmpfad einfach unter den Hauptablauf der ADC-Kontrolle schreiben oder bedarf es dazu eines eigenen Unterprogramms? Zu guter Letzt soll ein Motor mittels H-Bridge angesteuert werden. Nicht schwer, selbst für mich nicht. Die Endlagen werden mittels Mikroschaltern abgefragt, soweit so gut. Aber der Motor wird viel zu schnell drehen, und das soll er nicht. Also muss ich ihn Impulsweise antreiben - und das wird schwierig. Ich aknn mir sehr gut vorstellen, dass es einen Befehl dafür gibt, mit dem man das vereinfachen kann, nur kenne ich den nicht. Wer hat Ideen? Diese beiden Probleme sollten dann auch im Grunde alles gewesen sein ;) Der Controller hat dann genug zu tun. Freue mich sehr auf eure Antworten. LG -Maik LG -Maik
:
Gesperrt durch Moderator
Maik Schulze schrieb: > Wie muss ein PWM-Auswertepfad aussehen? Leider habe ich nur ein > digitales Multimeter, dass zwar Frequenzen messen kann, ich aber nicht > weiß, wie es mit Rechtecksignalen einer PWM ausschaut. Ideen eurerseits > und wie sollte der Programmpfad ausschauen? > Kann ich den Programmpfad einfach unter den Hauptablauf der > ADC-Kontrolle schreiben oder bedarf es dazu eines eigenen > Unterprogramms? Miss den Pulslänge, also die Zeit, in der High-Pegel am Pinn anliegt. Dazu giubt es ansonsten auch noch einen Artikel hier in der Sammlung. Maik Schulze schrieb: > Zu guter Letzt soll ein Motor mittels H-Bridge angesteuert werden. Nicht > schwer, selbst für mich nicht. Die Endlagen werden mittels > Mikroschaltern abgefragt, soweit so gut. Aber der Motor wird viel zu > schnell drehen, und das soll er nicht. Also muss ich ihn Impulsweise > antreiben - und das wird schwierig. Ich aknn mir sehr gut vorstellen, > dass es einen Befehl dafür gibt, mit dem man das vereinfachen kann, nur > kenne ich den nicht. > Wer hat Ideen? Guck dir die Timer des AVR an! Ob Bascom das einfach so unterstützt, weiß ich nicht. Sollte es aber, da es eine Grundfunktion ist. Ansonsten kann man auch mit Bascom direkt auf die Register des Controllers zugreifen.
Hallo. Was sind denn die Register und wozu brauche ich diese? Hab zwar schon des Öfteren davon gelesen, kann mir aber keinen Reim darauf machen. Wie kann ich die Impulslänge messen, wenn ich keinen Oszillographen habe? Ich muss mir echt mal so ein teil zulegen - langsam nervt es mich selbst, dass ich keine PWM-Signale auswerten kann. Geht da auch ein digitales Hand-Oszi? LG - Maik
Nachtrag: Welche Messauflösung sollte das Oszi haben? Habe eines bei Ebay gefunden, ich brauche es ausschließlich für diese Anwendung. Ist das ARM DSO203 Alternativ hätte ich noch das DSO Nano V3 gefunden. Welches taugt für meine Zwecke? Es soll lediglich Spannungen unter 15V und PWM-Signale einer Fernsteuerungsanlage anzeigen können. LG - Maik
Hi Es gibt auch die Möglichkeit die Soundkarte als Oszi zu missbrauchen. Beitrag "kostenlose Soundkarten-Oszilloskop-Programme" MfG Spess
Baaah ;) - das mir zu aufwändig. Ich brauche ein mobiles Oszi, da ich auch im Keller in meiner Werkstatt ab und an Messungen vornehmen muss. Dann schau ich mal nach einem normalen Oszilloskop, hab ein Gebrauchtes von Voltcraft mit 10MHz gefunden, vielleicht passt das ja. LG - Maik
OK, dann versuche ich es mal mit dem ARM203 V2 - vielleicht reicht das ja für meine Zwecke aus ;) Denke mal auch, dass es für kleinere Spannungen ein besseres Multimeter darstellt. Nun aber zurück zum Kern des Problems: Hab mir die Timer angeschaut und das scheint auch die Lösung des Problems darzustellen, mit einer Frage: Wenn ich einen Servo als Motor einsetze, was ja eigentlich nicht weiter wild ist (einfach nur Platine raus und Motor direkt anzapfen), dann wird dieser ja getaktet angesteuert. Dafür sollte der Timer0 schon mal die Basis darstellen - muss ich n bissel mit experimentieren, sobald Motor und H-Bridge-Komponenten mal eintreffen ;). Wie verhält es sich allerdings, wenn der Motor sagen wir beim Schließen eines Deckels ein gewisses Haltemoment aufweisen muss, was nahe seiner Belastungsgrenze liegt? Müsste dem Controller dann doch mittels Mikroschaltern sagen, dass eine bestimmte Position erreicht wurde und er die Taktung jetzt aufheben kann, bis der letzte Schalter erreicht wurde, richtig? Oder gibt es da noch elegantere Lösungen, z.B. einem langsamen Runterfahren der Taktung, was ja im Umkehrschluss den Motor beschleunigt und die Kraft anhebt!? LG - Maik
Was sind Interrupts, wozu kann man diese verwenden, wie aufrufen und was macht man mit denen? Hab schon so viel darüber gelesen, aber bislang nichts verstanden. Danke euch im Voraus.
Maik frog: >Hab schon so viel darüber gelesen, aber bislang nichts verstanden. Dann mußt Du noch weiter lesen... ;-) Das hier ist ganz nahrhaft: http://www.rn-wissen.de/index.php/Bascom_Interrupts MfG Paul
Paul Baumann schrieb: > Dann mußt Du noch weiter lesen... Haha - witzig! ;). Wenn der Artikel zu Ende ist, kann man auch nix mehr Weiterlesen, gell? Jetzt aber erst einmal um den Aufbau einer Probeschaltung zwecks H-Brücke kümmern, danach kanns ans Studieren und Programmieren gehen. LG - Maik
Ich hab echt keinen Bock mehr, mich hier so selten dämlich quer anfahren zu lassen!!! Und ganz sicher kopiere ich hier nicht den ganzen Text aus dem BASCOM-Tuto rein. Danke dir sehr, Paul. Die Seite hilft mir echt ungemein weiter. Die Beispiele sind auch sehr gut erklärt, gerade was PWM, Interrupts, Timer und dergleichen - im Grunde eigentlich ALLES - angeht. Bis ich mich da durchgefuchst habe wird wohl noch viel Zeit vergehen. Nehm ich aufm Tablet mit ;). Nun eine Frage: Ich möchte gern, dass der Controller neben dem Auswerten und Anzeigen der Akkuspannung als Graphen auch eine Lichtorgel übernimmt. Es müssen insgesamt 9 LED einzeln angesteuert werden, ist im Grunde nicht schwer. Nun das Komplizierte: Das Ganze soll als Demo-Modus laufen, sofern keine Spannung am ADC-Eingang anliegt. Dann sollen die LED in jeweils 3 unterschiedlichen Sequenzen leuchten: Alle blinken, kreuzweise versetzt blinkend, als Lauflicht. Sobald Akkuspannung gemessen wird, soll dann der Demo-Mode enden und die Beleuchtung durch ein PWM-Signal zuschaltbar sein. Kann ich dies einfach so unter den Hauptpfad, in dem das ADC-Programm steht, drunterschreiben? Ich möchte meinen, dass ich Sprungmarken setzen muss, nur bin ich mir unschlüssig, ob GOSUB ausreichend ist, denn das ADC-Programm soll ja weiter mit dem Messvorgang fortfahren. Sobald dann Spannung da ist, soll halt zusätzlich das PWM-Signal ausgewertet werden können, also parallel zur Statusanzeige. Geht das alles vom Hauptpfad (Do-Loop-Hauptschleife) aus oder muss ich da mehr machen? LG - Maik
Es wird m.E. am Besten gehen, wenn Du einen ADC-Interrupt benutzt. Dort drin kannst Du, wenn eine Spannung gemessen wurde einen Merker setzen. In der Hauptschleife fragst Du den Merker ab. Wenn der nicht gesetzt ist, springst Du in ein Unterprogramm, in dem der von Dir gewollte Demo-Modus stattfindet. Wenn der Merker gesetzt ist, dann springst Du in ein weiteres Unterprogramm, wo die Spannung ausgewertet wird. Dort muß als Erstes der Merker wieder rückgesetzt werden, damit er wieder bereit ist, zu erkennen, wenn keine Spannung (mehr) am ADC-Kanal anliegt. Für die PWM kannst Du einen Timer im Hintergrund laufen lassen. Der macht unabhängig vom restlichen Programm im Hintergrund "Einen weg". Nimm erst mal ein Blatt Papier und mache Dir einen Plan, was, wann, wie laufen muß, damit Du einen Überblick gewinnst. Wenn Du gleich auf der Tastatur drauflos wämmerst, kommt eher ein Wulst statt eines vernünftigen Programms heraus. MfG Paul
Hallo Paul. Oje, da hab ich mir anscheinend doch mehr eingebrockt :D Einen Plan auf Papier anfertigen? Also einen Ablaufplan, meinst du - ähnlich wie bei Grafcet, nur halt in Worten gefasst? Du/Ihr seid die Profis ;) und ich habe ein Bedenken dabei: Wenn der Controller beim Eintreffen des ADC-Ereignisses das Hauptprogramm verlässt und in ein Subprogramm spingt, soll er ja auch dauerhaft die Messwerte anzeigen. Das sollte aber - wie die anderen Funktionen auch - nebenbei geschehen. Der schlimmste Fall: Gleichzeitiges Auswerten der ADC-Spannung, Auswerten der PWM-Eingangssignale und damit Schalten der Beleuchtung, oder: DEMO-Modus läuft, wodurch sich der Controller im Unterprogramm befindet, und trotzdem soll der ADC-Eingang überwacht werden. Ich versuch das morgen mal, also mit den Subprogrammen. Interrupts habe ich noch nicht genutzt und muss mich da noch einmal richtig einlesen, bislang habe ich nur einfache GOSUB-Befehle als Meine betrachtet ;) ICh sag euch morgen, wie es gelaufen ist oder wo ich nicht weiterkomme. LG - Maik
>Du/Ihr seid die Profis ;)
Ich?! Nein -jede alte Frau, aber ich nicht.
GLEICHZEITIG geht es nicht. Es geht nur scheinbar , weil
das Programm so schnell abläuft, daß die Vorgänge für Dich als
Betrachter gleichzeitig aussehen.
Es ist zunächst für einen Menschen schwer, das Gefühl loszuwerden, daß
der Kontroller genauso langsam ist, wie man selbst...
;-)
MfG Paul
:
Bearbeitet durch User
Hi >Der schlimmste Fall: >Gleichzeitiges Auswerten der ADC-Spannung, Auswerten der >PWM-Eingangssignale und damit Schalten der Beleuchtung, oder: >DEMO-Modus läuft, wodurch sich der Controller im Unterprogramm befindet, >und trotzdem soll der ADC-Eingang überwacht werden. Mach mal keine Panik. Auch bei suboptimalen Progtrammiersprachen wie BASCOM ist der Controller noch schneller als du denkst. MfG Spess
Hallo. Jetzt habe ich die Oszi-Auswertung dank meines neuen Spielzeugs ;), dem ARM DSO203. Den Umgang damit muss ich allerdings auch erst noch richtig lernen, vielleicht reichen euch die angefertigten Bildschirm-Ablichtungen ja aus und können euch bei meinen zukünftigen Programmen helfen: Diese 3 Fotos zeigen das Signal, wenn der PWM-Kanal ein Low-Signal ausgibt.
Ja, schön. Servo-Signale. 1 bis 2ms, Wiederholung so ungefähr alle 20ms. Die Information steckt in der Länge des Pulses. Ist alles nicht neu, alles bekannt. Trotzdem denke ich immer noch, auch mit der Erfahrung aus dem ADC, dass du damit noch heillos überfordert bist. Die einzige Chance ist es, das Programm hier für dich zu schreiben. Im Grunde ist es gar nicht mal so schwer, wenn man die Grundlagen zu Timern beherrscht und mit dem Input Capture umgehen kann. Für einen durchschnittlichen Gymnasiasten würde ich sagen: Eine Sache auf einen Samstag Nachmittag, inklusive Vorübungen und Vorstudien zum generellen Timer-Verhalten. Trotzdem: Ich tus nicht. Vielleicht jemand anderer.
:
Bearbeitet durch User
Wenn ich dies nun richtig interpretiere, ist das High-Signal 2ms lang bei einem dazwischenliegenden Low von 12ms. Also eine Gesamtdauer von 14ms. Das Low-Signal am PWM-Kanal ist hingegen nur 1ms lang und zwischen 2 High-Pegeln liegen ganze 17ms, wodurch die Gesamtdauer bei 18ms liegt. Klingt aber für mich unlogisch, wenn es um prozentuale Werteanalysen geht. Habe ich also falsch gemessen oder nur falsch gerechnet? LG - Maik
Verdammte Axt: ICH BIN KEIN GYNASIAST!! Aber echt schön, dass man dies anscheinend nur Solchen zutraut. Und letztenendes: Wenn du das nicht machen willst, zwinge ich dich nicht dazu - hab auch nicht darum gebettelt. Aber anscheinend haben hier so viele das Mitteilungsbedürfnis, etwas nicht machen zu wollen, anstatt besser gar nichts zu schreiben! Das nervt, und zwar tierisch!
Hi >Das Low-Signal am PWM-Kanal ist hingegen nur 1ms lang und zwischen 2 >High-Pegeln liegen ganze 17ms, wodurch die Gesamtdauer bei 18ms liegt. >Klingt aber für mich unlogisch, wenn es um prozentuale Werteanalysen >geht. Die Information steckt in der Länge des H-Impulses. Der Abstand ist relativ uninteressant. MfG Spess
Maik Schulze schrieb: > Wenn ich dies nun richtig interpretiere, ist das High-Signal 2ms lang > bei einem dazwischenliegenden Low von 12ms. Also eine Gesamtdauer von > 14ms. > > Das Low-Signal am PWM-Kanal ist hingegen nur 1ms lang und zwischen 2 > High-Pegeln liegen ganze 17ms, wodurch die Gesamtdauer bei 18ms liegt. Der springende Punkt ist, dass die Dauer das Low-Anteils völlig uninteressant ist. Die Information steckt einzig und alleine in der Zeitdauer von der steigenden Flanke bis zur fallenden Flanke. Punkt. > Klingt aber für mich unlogisch, wenn es um prozentuale Werteanalysen > geht. Darum geht es aber nicht. Da sind keine Prozente im Spiel. Sondern Zeiten im Bereich 1 bis 2ms.
:
Bearbeitet durch User
Maik Schulze schrieb: > Verdammte Axt: ICH BIN KEIN GYNASIAST!! Du hast recht. Denn ein Gymnasiast könnte sich die Information wie ein Servoe Signal aufgebaut ist und wo die Information steckt mit Leichtigkeit aus einem Artikel (irgendeinem im Web) rauslesen und auch behalten. Ich kann es kaum glauben, dass du gelernter Mechatroniker bist.
:
Bearbeitet durch User
Wenn du nicht antworten möchtest, warum tust du es dann, Karl-Heinz? Ich erwarte von einem Moderator mehr Engagement als jemanden zu Dissen, der auf diesem Gebiet einen weitaus geringeren Kenntnisstand hat als er selbst UND die Informationen auch weitaus langsamer verarbeitet. Ich muss mir selbst einfache Themen bis zu 20mal durchlesen, bevor ich diese richtig verstanden habe. Und - wie viele Thmen umfasst BASCOM um das AVR-Programmieren? Rechne dir aus, was ich an Zeit aufwenden muss, um mich langsam vorarbeiten zu können. Beispielsweise wäre ich von allein nie auf die ADC-Auswertelösung gekommen, die man mir freundlicherweise beispielhafter aufgezeigt hat. Solch Herren wie DU sind sich doch zu fein dafür. Dann Bitte - ich zwinge dich keinesfalls zum Antworten, möchte dich aber in Zukunft darum Bitten, solch niedere Ausdrucksformen und solche Dissereien zu unterlassen. Würden wir uns persönlich gegenüber stehen, wärest du mit Sicherheit stinkfreundlich zu mir, weil du durch die Anonymität des Internets noch weniger als gar keinen Respekt mir Gegenüber hast! Und was mich noch am Meisten wundert: Einmal hilfst du, ein anderes Mal wieder nicht. Was soll der Blödsinn? Weitere Diskussion hierzu lasse ich nicht zu!
:
Bearbeitet durch User
Maik Schulze schrieb: > nie auf die ADC-Auswertelösung gekommen, die man mir freundlicherweise > beispielhafter aufgezeigt hat. Solch Herren wie DU sind sich doch zu > fein dafür. Dir ist aber schon klar, dass ich es war, der dich da gestern durchgeredet hat? > Einmal hilfst du, ein anderes Mal wieder nicht. Was soll der Blödsinn? Weil ich abschätzen kann, was auf mich zu kommt, wenn ich mich einklinke. Und die Kombination Du/dieses_Thema stinkt förmlich danach, dass es Tage dauern wird, bis du die Timer-Grundlagen und wie man die jetzt zum Ausmessen eines Pulses benutzt begreifst. Dagegen war der ADC pipifax. (gut, der ist auch so pipifax, die meisten Anfänger haben das überhaupt in BASCOM in 10 Minuten raus. Trotzdem hat es einen ganzen Tag gebraucht). Die Scahe ist nur die, dass du mit deiner Prozent-Annahme komplett und 100% falsch lagst. Und ehe du dich da in etwas um 180° verkehrt verrennst, kann ich nicht anders, wenigstens diese Hilfe zu geben. Was den Rest angeht: nimm es als Arschtritt, dass letztendlich nur du dir selber weiterhelfen kannst. Ohne dir zu nahe treten zu wollen: programmieren ist nun mal nicht deine Berufung.
:
Bearbeitet durch User
Na ich hoffe dann doch sehr, dass du selbst irgendwann einmal an den Richtigen gerät, de rdich genauso beschissen und wie Dreck behandelt, wie du es mit mir tust - das wünsche ich dir von Herzen! Aber ich schone meine Nerven und gönne dir deinen Ruhemszug nicht - egal was du in Zukunft hier in dieses Thema reinwetterst, ich begrüße weitere Kommentare von Dir und Deinesgleichen mit Verachtung. Ein solch niederträchtiges und Abartiges Verhalten von einer Forenmoderation ist mir beislang in noch keinem Forum begegnet - und ich kenne Viele!
Genau genommen war es Thomas, der mir das Beispiel aufzeigte, auch wenn du mir die genauere Anwendung zeigst und dafür war und bin ich auch nicht undankbar, aber ich kenne auch meinen Platz und muss mir von niemanden dämlich kommen lassen! Punkt!!!
Maik Schulze schrieb: > Ein solch niederträchtiges und Abartiges Verhalten von einer > Forenmoderation ist mir beislang in noch keinem Forum begegnet - und ich > kenne Viele! Halb bist Du ein Mimöschen, fühlst Dich bei jeder Kleinigkeit schräg angemacht und halb bekommst Du die Klappe gar nicht weit genug aufgerissen. Wer glaubst Du Kaspar eigentlich wer Du bist? Mach doch Deinen Murks alleine, oder such Dir 'nen Depp, der's für Dich bastelt, vielleicht kannst Du auch mit Geld nachhelfen, wo's bei Dir an Hirnschmalz fehlt. Karl-Heinz hilft hier Leuten, dass es manchmal schon fast schon schmerzhaft ist, sich sein Übermass an Hilfsbereitschaft anzusehen. Dass Du Dir einbildest ihn anschnauzen zu können, zeugt von wenig Verständnis, als auch geringem Anstand. Wie wär's, wenn Du Dir Deinen Kram anderswo zusammenschnorrst? Dein Abgang wär' ganz sicher kein Verlust.
jetzt hört aber mal auf... Maik, schau Dir mal dieses Beispiel an: http://www.rclineforum.de/forum/board49-zubeh-r-elektronik-usw/board72-elektronik-spezial-eigene-scha/board92-atmel-programmierung-f-r-einst/beispielprogramme-mit-bascom/106253-programm-7-r-c-kanal-einlesen/
Danke sehr, Gerhard. Arbeite ich heute durch. @ Und ws bist du für ein Hansel? Versteckst dich hinter einem gast-Account - vermutlich schon x-mal gekickt worden oder was?
Maik S. schrieb: > @ Und ws bist du für ein Hansel? Versteckst dich hinter einem > gast-Account - vermutlich schon x-mal gekickt worden oder was? Deine Vermutung ist falsch. Genauso wie Dein unverschämtes Verhalten hier. Mich tät interessieren, welches Deine Foren sind, die Du sonst so "beglückst". Denn egal ob Gast dort oder nicht, superempfindlich sein, aber fleißig austeilen, noch dazu mit 'ner mäßigen Auffassungsgabe bist Du kein Gewinn für ein Forum. Apropos "Gast", magst Du erklären, wo der Unterschied zwischen einem Gast und einem angemeldeten User liegt, wenn bei der Anmeldung keine Überprüfung vorgenommen wird? Statt Maik S. kannst Du genauso Hans W. sein und niemand kennt den Unterschied.
@MWS Hör mit der Stänkerei auf. Du mußt hier kein Öl in ein Feuer gießen, was schon erloschen ist. SCNR Paul
Thomas der Bastler schrieb im Beitrag #3384506: > Du auch nicht Das wage ich zu bezweifeln. Seine Wortwahl (Benehmen) ist zwar nicht gerade vorbildlich (meine auch nicht), aber von Bascom hat er Ahnung. Und betreffs AVR-ASM und C habe ich auch schon wertvolle Hinweise von ihm gelesen. Wenn man sich in seinen Antworten auf das Fachliche konzentriert, anstatt sich an seinem Geschimpfe hochzuziehen, dann findet man durchaus wertvolle Hinweise, wie man zu weiteren Infos kommt. Und wenn es nur Suchbegriffe für die Bascom-Hilfe sind. ...
Männer -das Pferd ist tot! Wir reiten weiter... Nun seid doch mal vernünftig und spuckt nicht auf den Boden künftig! ******************John Wayne sein Schwiegervater*********************
John Wayne sein Schwiegervater schrieb: > Männer -das Pferd ist tot! Yep. Da dem TE ja vermutlich ohnehin nur mit einer fix und fertig auscodierten Lösung zu helfen ist und hier ansonsten nur noch persönliche Befindlichkeiten bekannter Forenteilnehmer diskutiert werden, würde ich mal ein EOT reinwerfen.