www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit AS5040 rotary encoder


Autor: Marcus W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich hoffe ich finde hier jemanden, der den AS5040 schon mal benutzt hat.

Ich versuche den gerade über SPI auszulesen und bekomme nur 0x2001 als 
Rückgabewert.
Laut Datenblatt sollte nach dem Startup das OCF bit auf high gehen, 
dieses bleibt aber leider auf low.

Habe schon mit dem Oszi überprüft, ob mit der Datenübertragung alles 
funktioniert. Das scheint alles zu stimmen.


Der PWM output des AS5040 funktioniert allerdings tadellos.

Hat jemand einen Tipp für mich?

Gruß Marcus

Autor: Marcus W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach 5 Stunden Kopfzerbrechen hab ich die Lösung doch noch gefunden...

Falls andere auch mal in die Verlegenheit kommen hier die kurze 
Beschreibung:

Hab den IC mit dem SPI des mega64 auslesen wollen.
SPI-Einstellung war:
SPCR  &= ~(1<<CPOL); // rising edge leading
SPCR  |=  (1<<CPHA); // sample on falling edge

Soweit so gut.

Was ich aber nicht bedacht habe (und was auch nicht klar aus dem 
Datenblatt herausgeht): Die Clock muss im Idlezustand anscheinend high 
bleiben.

Ich mach das jetzt so: Nachdem der Interrupt kam und die Übertragung 
beendet ist wird der SPI ausgeschaltet und der Pin auf high gezogen.



So, jetzt hab ich mir die Nacht verdient :)

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für diesen Input, wir werden das beim nächsten Datenblatt update 
hinzufügen.

lg Jan

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcus W. wrote:
>
> So, jetzt hab ich mir die Nacht verdient :)

Falls Du noch mitliest:
Rückst Du den Ansteuerungscode für den Sensor raus?
Ich werde den Sensor auch benutzen und das sollte mir möglicherweise 
auch 5h Kopfzerbrechen ersparen.

THX
Cheers
Detlef

Autor: Martin J. (bluematrix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mir auch diesen Sensor besorgt,
könnt auch mir jemand einen schon vorhandenen Code geben?

Danke

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich brauch den Sensor auch für meine Diplomarbeit in der Schule.
Hab jedoch ein Problem beim Winkelauslesen.
Seriel sollte ein Wert von 0-1023 empfangen werden. (360° = 1023)
Ich bekomme jedoch immer nur einen Wert von 0 - ca. 500; in einem Teil 
des Kreise bleibt der Wert konstant auf ca. 500 (ich glaube es waren 
511) obwohl der Magnet gedreht wird.

Muss man den AS5040 vorher programmieren um auch Werte von 0 bis 1023 zu 
bekommen? Ich hab das AS5040-Adapterboard und den LPC935.
Hat jemand vielleicht schon einen fertigen C-Code?

thx

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche mich auch gerade an dem AS5040 und der SPI Schnittstelle.
Prinzipiell scheint es als ob die SPI Schnittstelle funktioniert, da ich 
Daten empfange.

Aktuelle Einstellungen der SPI:
CPOL = 1
CPHA = 0


Wenn ich nun die empfangenen Daten bewerte, so muss ich feststellen, 
dass bei CPOL = 1 nur Daten im Bereich von ca. 500...1023 empfangen 
werden, hingegen bei CPOL = 0 zwischen ca. 0...500.

Dieses Phänomen ist mir noch nicht ganz klar.
Der PWM-Wert wird hingegen immer korrekt ausgegeben.

Hier mal der Code zum auslesen:
void as5040_spi_data(void)
{
  uint16_t data=0;
  SPCR |= (1<<CPOL);          // SCK high on IDLE
  
  clear_CSN();        //set low CSN
  data = spi_transferword(data);
  set_CSN();          //set high CSN
    
  AS5040data.state  = (uint8_t) (data & 0b0000000000111111);  // and extract status and angle
  AS5040data.value   = (data & 0b1111111111000000) >> 6;      // mask and shift 6 bits to the right
  
}

Für erste tests sollte die Auswertung der Statusbits ja egal sein. Oder 
seht Ihr das anders?

Gruß
Ralf

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@tobi: Danke für den Link. Jedoch habe ich das Datenblatt als erstes mal 
studiert um dort auf eine Lösung zu kommen. Jedoch bis jetzt erfolglos. 
Daher habe ich ja auch hier im Forum geschrieben.

Wenn es bereits fertigen Code für diesen Chip gibt wäre ich auch nicht 
unglücklich darüber, aber primär möchte ich meinen Code zum laufen 
bekommen.

Daher bin ich über weitere Hinweise sehr dankbar.

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://techwww.in.tu-clausthal.de/site/Projekte/Ca...

vielleicht hilft dir das ja weiter.
ich nutze bisher nur die analogen oder die PWM chips von ams

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mich nun ein wenig auf der Projektseite der TUClaustal 
umgesehen. Allerdings suche ich dort vergeblich nach dem AS5040.

Kannst Du hierzu noch genauere Links schicken?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch der Nachtrag:
Ich habe den AS5040 schon gefunden, allerdings nur mit PWM auswertung 
und in VHDL programmiert.

Für die SSi bzw. SPI Schnittstelle hilft dies ja erst mal noch nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.