Hatte bereits in einem anderen Teil gefragt. Es läuft soweit auch. Wenn
ich den Regler von GND nach Vcc drehe schaltet die LED um. Leider
flackert sie mehrfach und beim weiterdrehen schaltet sie dann vollkommen
um. Leider finde ich den Grund nicht dafür.
Ist ein Fehler im Programm oder habe ich ein Register vergessen?
Vielleicht könnte sich das mal jemand ansehen.
Paul
Paul schrieb:> Wenn ich den Regler
Welchen Regler? Ein Poti? Ist das auch in Ordnung und nicht verdreckt?
Hast du am Schleifer einen Kondensator? Ist deine Versorgungsspannung
stabil?
Ich kenne zwar den 841 nicht und die, die ich in Gebrauch habe, haben
keine einstellbare Hysterese, aber offenbar reicht die für die Qualität
des Eingangssignal nicht aus.
Verwende ein einfachen neuen Einstellregler. Habe gemessen das die
Spannung nicht springt sondern langsam ansteigend ist. Haben keinen
Kondensator dran, muss da einer sein? Die Betriebsspannung ist stabil.
Werde die Spannungen noch mal überprüfen.
Paul schrieb:> Verwende ein einfachen neuen Einstellregler.
Ich bezweifele stark, dass Du einen "Regler" verwendest. Bitte überprüfe
das nochmal und nenne uns ggf. den Typ des Reglers.
Ein "Regler" ist eine Vorrichtung bzw. Schaltung, die einen Ist-Wert mit
einem Sollwert vergleicht, und abhängig davon, einen Wert (z.B. eine
Spannung) ausgibt, die ein Stellglied beeinflusst.
Siehe: https://de.wikipedia.org/wiki/Regler_(Begriffskl%C3%A4rung)
Ein "(Ein-)Steller" ist z.B. ein Potentiometer. Damit stellst Du z.B.
eine Spannung ein.
Siehe https://de.wikipedia.org/wiki/Steller
Umgangssprachlich wird dazwischen oft nicht unterschieden. Häufig wird
jedes drehbare Bedienelement als "Regler" bezeichnet. Aber wir sind hier
in einem Forum unter Technikern, in dem wir uns bemühen, uns präzise
auszudrücken. Da haben die Begriffe viel engere Bedeutungen, damit
völlig klar wird, was gemeint ist.
Vermutlich wird Dein Potentiometer mehr als 50mV springen oder rauschen,
so das die Hysterese nicht groß genug ist. Dagegen hilft ein anderes
Potentiometer, (evtl. eine Reinigung oder Reparatur des vorhandenen)
oder eine externe Schaltung mit einem Komparator.
Es kann aber tatsächlich auch sein, dass die Betriebsspannung von dem
Einstellvorgang beeinflusst wird (oder auch etwas anderes die Spannung
beeinflusst).
Ebenso kann es sein, dass Dein Code für das Flackern verantwortlich ist.
Bitte poste einen vollständigen Schaltplan.
Bitte poste den vollständigen Code (als Anhang).
Theor schrieb:> Paul schrieb:>> Verwende ein einfachen neuen Einstellregler.>> Ich bezweifele stark, dass Du einen "Regler" verwendest. Bitte überprüfe> das nochmal und nenne uns ggf. den Typ des Reglers.
Mein Gott, die Sprüche...
Belehrst Du den Verkäufer im Elektronik-Geschäft auch auf diese Weise?
Dann würde ich Dich bei Kopf und Arsch packen und draußen kämest Du zu
liegen!
Paul schrieb:> Haben keinen> Kondensator dran, muss da einer sein?
Es kann sicher nicht schaden, den Schleifer mit einem RC Tiefpass vor
dem Komparatoreingang zu glätten und zu puffern. Das hält Einstreuungen
auf die Potidrähte fern, mittelt das Poti ein wenig und buffert die
Messspannung.
Kommt haltet euch ein bisschen zurück. Er hat soweit Recht das kein
Regler im Sinne einer Temperatur Regler oder ähnliches ist.
Es ist ein "Regler" der durch eine mechanische Drehbewegung eine
Spannung von 0 (GND) bis zur vollen Spannung von 5V (Vcc) einstellt und
durch einen Prozessor mit einer Vergleichsspannung mit einem AC (analog
Comparator) vergleicht und einen Ausgang schaltet.
Damit dürfte die Diskussion um eine korrekte Bezeichnung beendet sein.
Es ist weitaus hilfreicher wenn man sich nicht in diese
Bezeichnungdiskussion einlässt und lieber mit etwas konkreten zum
Problem bei beiträgt.
Paul schrieb:> Muss es ein RC Glied sein oder reicht ein 100nF aus?
Der Schleifer des Potis bildet halt je nach Stellung einen mehr oder
weniger grossen R zum Aufladen des Kondensators. Ich bevorzuge einen
extra R, damit ich den Tiefpass einigermassen passend rechnen kann, ohne
mich gross um die Quellimpedanz (des Potis) zu kümmern.
Sicher ist aber ein Kondensator statt keinem Kondensator ein grosser
Fortschritt. Müssen auch keine 100nF sein, da gehen auch 22nF oder 10nF.
Tierfreier Nichtraucher schrieb:> [...]>> Mein Gott, die Sprüche...>> Belehrst Du den Verkäufer im Elektronik-Geschäft auch auf diese Weise?> Dann würde ich Dich bei Kopf und Arsch packen und draußen kämest Du zu> liegen!
Eine gewaltsame Handlungsweise, der ich mich mit angemessener, von der
Notwehr gemäß §32 StGB erlaubter Gegengewalt, erwehren, und die eine
Strafanzeige nach sich ziehen würde.
Falls Du fundierte, - auch emotional fundierte, aber dennoch höfliche -,
Kritik, an meiner Art mich auszudrücken, vorbringen willst, wäre ich Dir
dafür (voraussichtlich) dankbar.
Die Erwähnung von Gewalt als denkbare Reaktion auf mein Verhalten halte
ich jedoch für unangemessen.
Falls Du in Off-Topic eine entsprechende Kritk vorbringst, werde ich
unter gewissen Voraussetzungen (die oben erwähnten) darauf eingehen.
@ Paul
Ergänzend zu Matthias Beitrag:
Nur den abgegriffenen Widerstand des Potentiometers als Widerstand des
Tiefpasses zu benutzen, hat den Nachteil, dass die Grenzfrequenz vpm der
Stellung des Potentiometers abhängt.
Im übrigen gibt es hier keine "Diskussion" um den Unterschied zwischen
"Steller" und "Regler". Sie wäre völlig unnötig, da die Begriffe klar
definiert und voneinander abgegrenzt sind.
Ich möchte hinzufügen, dass mir nicht daran liegt, irgendeinen
emotionalen Gewinn daraus zu ziehen, Dich herabzusetzen, weil Du einen
Unterschied nicht kennst. Es geht mir vielmehr darum, zu erreichen, dass
Du den Unterschied kennst und aus Deinem Wissenzuwachs erwüchse mir ein
positiver emotionaler Gewinn.
Der Unterschied ist nämlich durchaus auch von sachlichem Belang. Falls
Du einen Regler verwendest, würde man an der Differenzbildung arbeiten
müssen. Das ist eine andere Baustelle.
Hallo,
es wurde dir doch schon gesagt das deine Hardwarebeschaltung so nicht
funktioniert mit Nutzung des Komparators - wegen der Pinbelegung. Der
Aufbau ist in meinen Augen auch überflüssig.
a) setze einen einstellbaren OPV Komparator vor einen digitalen Eingang
oder
b) schließe das Poti an einen analogen Eingang an und lasse den Rest weg
In beiden Fällen bist du in allen Belangen maximal flexibel was die
Eintellungen betrifft. Bei a) in Hardware und bei b) in Software. b)
wäre der Grund warum man einen programmierbaren µC verwendet.
Veit D. schrieb:> Hardwarebeschaltung so nicht> funktioniert mit Nutzung des Komparators - wegen der Pinbelegung
Gemäss Datenblatt des Attiny 841 verfügt er über 2 Comparatoren. An AC0
ist die Belegung durch den Hersteller festgelegt und die Pins dazu
vergeben. Beim AC1 kann durch die MUX der Eingang negativ und positiv
gemäss Tabelle eingestellt und genutzt werden. In der Tabelle im
Datenblatt sind dazu die verschiedenen Möglichkeiten aufgelistet.
Das ist immer noch nicht ganz korrekt. Diese Zeile ist komplett
überflüssig:
> ACSR1A |=(1<<ACO1); // analog Comparator Ausgang
Du beschreibst da ein Bit, was nur gelesen werden kann (erkennst du im
DB daran, dass in der Registerbeschreibung unter dem Bit nicht "RW"
steht, wie bei den meisten anderen, sondern "R".
Zu deinem Glück ist aber das Beschreiben eines nur lesbaren Bits völlig
folgenlos. Nützt nix, schadet aber auch nicht...
> Wenn> ich den Regler von GND nach Vcc drehe schaltet die LED um. Leider> flackert sie mehrfach und beim weiterdrehen schaltet sie dann vollkommen> um. Leider finde ich den Grund nicht dafür.
"Potikratzen" und/oder eingestreute Störungen größer als die Hysterese
des AC. Ein übliches Gegenmittel wurden im Thread bereits genannt:
Tiefpass.
Hallo
habe ins DB geschaut. Du hast recht, es steht ein R da und habe es dann
auskommentiert.
Habe mal die Spannungen gemessen. Bei U/2 stehen 2,48V an, als Vcc habe
ich 4,97V. Nach dem Messgerät sind sie relativ stabil, konnte keine
Einbrüche sehen. Habe dann am Schleifer des Potis (Regler oder Steller)
einen 100nF Kondensator nach GND eingelötet, geht am schnellsten. Der
Comparator Eingang scheint sehr Empfindlich auf Einstreuungen zu sein.
Im Bereich von ca. 1,1V bis ca. 3,9V reagiert er auf meine Hand.
Teilweise brauche ich die Platine nur anzufassen. Ist der Comparator so
Empfindlich?
Zu dem Tiefpass, noch einen Widerstand zwischen Schleifer und Prozessor
und noch einen zweiten Kondensator, alles zusammen als Pi Glied? Wenn
die zwei Kondensatoren je 100nF haben, welcher Widerstand am besten.
Dachte dabei an 1kOhm oder das Poti kleiner machen?
Paul schrieb:> Ist der Comparator so> Empfindlich?
Ja, der hat Eingangswiderstände im Bereich von 100MΩ. Da genügen
geringste eingetragene Energien, um erhebliche Spannungen zu
produzieren. Ganz so schlimm ist es bei dir aber nicht, die Eingänge
werden ja durch ihre jeweiligen Quellen belastet.
> die zwei Kondensatoren je 100nF haben, welcher Widerstand am besten.> Dachte dabei an 1kOhm oder das Poti kleiner machen?
All die Tips im Thread sind prinziell richtig, berücksichtigen aber
nicht, dass du ZWEI extrem hochohmige Eingänge hast, zwischen denen
die Differenzbildung erfolgt.
Die Filter für sowas sehen sinnvollerweise etwas anders aus "normal".
Denn die Störungen können aus beiden Richtungen kommen. Statt für jeden
der beiden Eingänge Tiefpässe nach Masse vorzusehen, benutzt man hier
sinnvollerweise einen Hochpass zwischen den beiden Eingängen...
Sprich: In der allereinfachsten Form einen simplen Kondensator. Wert so
ungefähr im Bereich einiger zehn pF bis einige (wenige) nF dürfte
passen. Kommt natürlich auch darauf an, was da eigentlich an Störungen
reinkommt und wie die Impedanz der beiden Signalquellen ist. Wenn man
keine Lust zum Rechnen und Messen hat, probiert man einfach. Als Bastler
darf man das...
An den anderen Eingang habe ich gar nicht gedacht. Der hochomige Eingang
war mir schon klar, doch solche Auswirkungen habe ich nicht erwartet.
Kann dann aber annehmen das mein Programm korrekt ist und der Effekt an
der Platine bzw. Eingänge liegen.
Paul schrieb:> Gilt das gleiche auch für ADC? Bei einer Messung mit ADC scheint es> unempfindlich zu sein.
Wenn man den Bereich von 0-5V mit einem 10-Bit ADC auswertet, bleiben
pro Bit etwa 5mV (5000mV / 1024). Das ist sehr viel mehr als bei der
Schwelle des Komparators, der schon bei ein paar dutzend µV hin- und her
springt.
Deswegen zappeln Komparatoren gerne mal in der Nähe der Schwelle und
deswegen sollte man in Software auch die Plausibilität prüfen.
An ADC2 habe ich einen Spannungsteiler mit 2x 10kOhm und der Pin hängt
an der mitte, damit ergeben ca. 2,5V. Am ADC3 habe ich ein
Einstellregler mit Achse (Poti) mit 22k Ohm und das liegt an GND und Vcc
und der Schleifer am ADC. Damit kann ich eine Spannung zwischen GND und
Vcc einstellen. Habe jetzt einen 100nF C nach GND geschaltet um
Einstreuerungen zu verhindern.
Paul schrieb:> An ADC2 habe ich einen Spannungsteiler mit 2x 10kOhm und der Pin hängt> an der mitte, damit ergeben ca. 2,5V.
Der Spannungsteiler muß aber an AIN10. Der MUX schaltet nur den
negativen Eingang um. Ich würde mal vermuten, für den Komparator sind
nur die single-ended Settings valid.
"Bit 2 – ACME1: Analog Comparator Multiplexer Enable
When this bit is set and the ADC is switched off (ADEN in ADCSRA is
zero), the ADC multiplexer is selected as the
negative input for the analog comparator."
Hallo Peter
gilt das auch für den AC1? In der Tabelle sind doch alle möglichen
Kombis dazu drin. Werde das heute abend kontrollieren. Im DB des
Herstellers sind ja die AIN? angegeben.
Ich würde mal behaupten, daß
Figure 15-1. Analog Comparator 1 Block Diagram
und
Table 15-1. Analog Comparator 1 Input Options
korrekt sind.
Mein Eindruck ist auch, daß die Qualität der AVR-Datenblätter
nachgelassen hat.
Peter D. schrieb:> Mein Eindruck ist auch, daß die Qualität der AVR-Datenblätter> nachgelassen hat.
Das kann ich mit ruhigem Gewissen bestätigen. Mir fiel das in den Timer
Kapiteln auf. Die Register und Bit Einstellungen sind nicht mehr so
schön lesbar wie vorher. Zuviele n und x Angaben. Merkt natürlich nur
der der die alten noch hat. Hauptsache es wurde einige Diagramme bunt
gefärbt.
Sorry, entschuldige die blöde Frage. Hatte ACME=1 nicht drin. Habe jetzt
dazu geschrieben:
1
ACSR1B|=(1<<ACME1);
Habe dazu das DB konsultiert und versucht rauszukriegen was das genau
macht.
Es wird dann ADEN ausgeschaltet und ACME eingeschaltet. Nach Tabelle
15-5 wird dann der Multiplexer nach Tabelle 16-3 negativ eingeschaltet.
Stimmt das so?
Hast du mal Zeit für ein ganz andere Frage.
Du hast mal eine Tasterentprellung ohne Timer vorgestellt. Ist
allerdings schon lange her (Relativ lange). Arbeite auch gerade daran.
Scheiter aber dabei. Problem:
Möchte 5 Taster per I2C vom slave übertragen. Dabei können jede Taste
mit einer oder mehreren gleichzeitig gedrückt werden. Die Auswertung
welche tasten gedrückt wurden erfogt im Master. Ich muss aber genau
auswerten welche Taste gedrückt wurde und das mit Entprellung. Da alles
auf einem Ati 841 laufen soll, ist der Platz leider begrenzt.
Hast du eine Idee dazu?
LG Paul
Paul schrieb:> Meine die Tabelle 16-3. Dort sind alle Kombinationen des AC1 für die> Einstellungen ADC des Multiplexers angegeben. Mit dem AC0 geht das> nicht.
Du hast dein Kernproblem immer noch nicht begriffen: Du hast an keiner
Stelle dem AC1 gesagt, dass er den Multiplexer überhaupt benutzen soll.
Ich habe dir im Vorgänger-Thread gesagt, dass du das tun musst, um
überhaupt zwischen den beiden von dir gewünschten Pins die Differenz
messen zu können.
In diesem Thread hat einer (nämlich Peda) besser aufgepaßt als ich, und
festgestellt, dass du das dem AC1 immer noch nicht sagst.
Feststellung: du bist weiterhin offensichtlich vollständig
lernresistent. Und damit bin ich auch hier schon wieder raus...
Sorry, jetzt verstehe ich deine Worte nicht. Habe das von Peter sofort
eingebaut und damit getestet. Die Anzeige ist vollkommen ruhig geworden,
kein flackern oder ähnliches. Habe dann im DB versucht mehr über die
Funktion zu erfahren. Dort wird auf eine Tabelle verwiesen mit den
Einstellungen dazu und auf eine weiter mit den Angaben zu den ADC.
Wie kommst du darauf das lernresistent bin?
Das ist drin und wollte nur noch was zur Funktion haben. Was ist daran
verkehrt?
Hallo Paul
Tasten entprellen - warum machst Du das nicht mit Hardware?
Das ist einfacher als per SW.
Und die Auswertung und Plausibilitätsprüfung erfolgt ja im Master und
Dasia ist eh' die grössere Herausforderung denke ich.
[OT]
Paul schrieb:> Du hast mal eine Tasterentprellung ohne Timer vorgestellt.
Diese Macro-Lösung sollte man nur bei sehr kleinen Programmen verwenden.
Sie hat einige Seiteneffekte, die bei größeren Applikationen stören
könnten.
Paul schrieb:> Die Auswertung> welche tasten gedrückt wurden erfogt im Master.
Für so eine popelige Aufgabe einen extra MC abzustellen, sollte schon
triftige Gründe haben, z.B. sehr lange Zuleitungen.
Vermutlich wird das nötige I2C-Protokoll deutlich mehr Code benötigen,
als das simple Einfügen der Entprell-Lib in den Master.
CPU-Zeit wird auch keine eingespart. Im Gegenteil, der Master muß ja den
I2C-Slave ständig pollen.
Paul schrieb:> Da alles> auf einem Ati 841 laufen soll, ist der Platz leider begrenzt.
Die Entprell-Lib mit Timer schätze ich mal mit ~100 Byte Flash ab.
Was muß der denn sonst noch alles machen, um so einen riesigen 8kB Flash
zu füllen?
Bei mehr Fragen dazu, mach nen eigenen Thread auf.
Hallo Peter
da der Ati 841 einen I2C Slave hat möchte ich damit verschiedene
Platinen machen, die kleine Aufgaben erfüllen sollen. Das geht von
Joystick Steuerung über Taster bis zu Messungen und Encodern. Es sollen
Teile sein die im Grunde nicht über einen I2C Bus verfügen. Es sollen
dabei Teilaufgaben gelöst werden, wobei auch Aufgaben übernommen werden.
Sie können dabei als eigenständige Module oder Slaves genutzt werden.
Die gesamte Steuerung und Auswertung soll dabei vom Master übernommen
werden. Displaysteuerung, z.B. Farb TFT oder Servo oder Schrittmotor.
Es gibt ein StartUP die solche Module produzieren, allerdings mit einem
PIC. Beim einer vernünftigen Planung am Bus kann ich damit die
verschiedensten Aufgaben erfüllen.
Wollte die 5 Tasten wie ein Bedienkreuz verwenden. Wenn dabei aber
mehrere Tasten gleichzeitig gedrück werden muss ich das zuverlässig
erkennen und übertragen.
Gern mache ich dazu was neues auf. In der Hoffnung das du mal
reinschaust.
LG Paul
Hallo footbar
Danke für die Info. Im DB sind einige Register auf 0 gesetzt. Wenn ich
da von Teile verwende muss ich sie doch auf 1 setzen. Die Register die
bereits auf 0 stehen brauche dabei nicht zu ändern. Meinst du das?
> Die Register die bereits auf 0 stehen brauche dabei nicht zu ändern.> Meinst du das?
Nein. Bits, die du auf 0 haben möchtest (z.B. MUX0), musst du auch auf
0 setzen - mit |= geht das nicht. Der Unterschied zwischen: