- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: ASURO-Kollisionstaster Bitwert zuordnen!

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    36
    Beiträge
    1.225
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von powder999 Beitrag anzeigen
    P.S.: Ich hab bereits in den Quellcode geschaut, aber ich versteh das halt ned. Tut mir leid markusj, aber kannst du vielleicht über deinen Schatten springen und mir vielleicht doch noch helfen?
    Ich versuche dir noch einen Stoß in die richtige Richtung zu geben: Die Schaltung im ASURO ist im Endeffekt ein variabler Spannungsteiler. Es gibt auf der einen Seite einen Vorwiderstand und auf der anderen Seite dann die verschiedenen an die Taster angeschlossenen Widerstände. Der Vorwiderstand und die anliegende Spannung ist bekannt, es ist also möglich, den unbekannten Widerstand an den Tastern zu errechnen. Das ist Teil 1 der Lösung.
    Um jetzt anhand des ermittelten Gesamtwiderstandes auf die einzelnen Taster zurückschließen zu können, hat man sich eines kleinen Tricks bedient: Die Widerstandswerte sind vielfache voneinander. Es gibt einen Grundwert R und alle Widerstände sind so ausgelegt, dass sie einen Wert von ungefähr 2^i * R haben, wobei i die Nummer des Widerstandes ist.
    Mit diesem zweiten Teil Komponente ergibt sich dann eine Gleichung: Parallelschaltung von Widerständen (an den Tastern) -> Spannungsteiler (Vorwiderstand und der aus der Parallelschaltung resultierende Widerstand) -> Spannung -> ADC-Wert. Mit etwas Formel-Umstellen kommt man irgendwann dahin, dass auf einer Seite des Gleichheitszeichens eine Summe der ganzen 2^i steht, jeder Widerstand i also dann auf ein Bit (Zweierpotenz -> darstellbar durch ein Bit) abgebildet wird. Und genau diese Formel steht dann auch im Quelltext der Asurolib.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Ich schaue fleißig mit und vermute, daß sich ein "Geheimnis" in der switches.c verbirgt.

    http://www.asurowiki.de/pmwiki/pub/html/files.html
    http://www.asurowiki.de/pmwiki/pub/h...8c-source.html

    In Zeile 103 wird i mit dem ADC Wert geladen und in Zeile 120 der Rückgabewert produziert.
    Da ich C nicht verstehe, kann ich nur vermuten, daß hier die Bits entsprechend der Taster gesetzt werden

    Ob ich die richtigen Sourceversionen erwischt hab weis ich leider auch nicht.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    25.11.2011
    Beiträge
    40
    An Searcher und markusj: Danke für die Super Erklärungen, muss mich noch mal kurz damit beschäftigen, ich hoffe, dann klappt das auch mit dem Verständnis!

    Schönes Wochenende und bis bald!

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    25.11.2011
    Beiträge
    40
    ich hab jetzt noch mal in den Quellcode geschaut und folgendes gefunden:

    return ((unsigned char) ((( 1024.0/(float)i - 1.0)) * 63.0 + 0.5));

    Was setz ich denn jetzt für float ein? Hab gedacht die Spannung, die ich berechnet hatte, also 3,81V, aber dann kommt was ganz kryptisches raus --> (1024/3,81) -1=267,766 --> ...*63,0=16869,28 --> ...+0,5= 16869,78! Das stimmt doch garantiert ned!
    Es ist doch bestimmt ganz leicht, aber ich komm ned drauf, hab schon den Quellcode angeguckt und verschiedene Rechnungen gemacht, aber irgendwie klappt das ned. Liegt das vielleicht daran, dass man einfach hinnehmen muss, dass der ASURO das kann?

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    "i" ist das Zahl zwischen 0 bis 1023 das den Widerstandsteiler der Tasten entspricht. Das kommt aus den ADCL und ADCH Registern nach dem Analog-digital umwandlung. Das sind zahlen ohne etwas hinter den Komma. "(float)" ist ein Auftrag für den Compiler das "i" als Fließkommazahl-zahl berechnet werden soll, und nicht als Integer-wert. "(unsigned char)" is ein Auftrag für den Compiler das dass Resultat als ein 8-bit wert ausgegeben soll werden. (0-255, ohne Fließkommazahl, darf auch nicht als negatife Wert benutzt werden.)

    Also wird das wie folgend ausgerechnet:

    Code:
    return ((unsigned char) ((( 1024.0/762.0 - 1.0)) * 63.0 + 0.5));
    ! 762 laut deine eigene Berechnungen. Das wurde 780 sein mit Searcher's Berechnungen

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 17.04.2011, 00:30
  2. Zeichen zuordnen
    Von Killer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 24.02.2008, 00:41
  3. Kollisionstaster von Asuro unten montieren- geht das?
    Von technique im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 41
    Letzter Beitrag: 10.08.2006, 22:33
  4. bauteile zuordnen
    Von A.T.I.R im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 10.06.2005, 21:20
  5. MSCOMM1 Daten zuordnen in VB6, wie?
    Von Sommer im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 24.03.2005, 18:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests