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
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
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
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.
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.
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.
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!
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.
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.
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.
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.