dobry den,
Som arduino nadseny zaciatocnik. Poprosil by som skusenejsich pozriet sa na senzor 28PERCK od megatronu . Tento senzor komunikuje po zbernici SPI.
pouzil som nasledujuci program z netu pre arduino avsak senzor stale ukazuje nulu. Nemozem prist kde je chyba . Jazyk C zatial velmi neovladam. Pre skusenejsich by to teda mohol byt len trivialny problem.
#include <SPI.h>
#include <inttypes.h>
int CSn;
uint8_t readbuf[2];
void setup()
{
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
//initialise spi communications as 1MHz
CSn =10;
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setDataMode(SPI_MODE1);
pinMode(CSn, OUTPUT);
digitalWrite(CSn, HIGH);
}
void loop()
{
//To Read the angle of the sensor we must send a read command for
//the appropriate register which for angles is x3FFF
//so to read from this register we must send 0b1111 0111 1111 1111
//this transfer will consist of two spi bytes each of 0xFF
digitalWrite(CSn, LOW);
uint8_t val = 0xFF;
SPI.transfer(val);
//Read in values
SPI.transfer(val);
//After 16 clock cycles Csn must be pulled high to reset some parts
//of the interface core
digitalWrite(CSn, HIGH);
digitalWrite(CSn,LOW);
//Now send a NOP 0b0000 0000 0000 0000and recieve the latest angle
val = 0x00;
readbuf[0]=SPI.transfer(val);
val = 0x00;
readbuf[1] = SPI.transfer(val);
digitalWrite(CSn, HIGH);
//Break down readbuf into its integer representation:
uint16_t angle = readbuf[0]&0b00111111;
angle = angle << 8;
angle = angle + readbuf[1];
//angle = 1000;
// print out the value you read:
Serial.println(angle);
delay(1500); // delay in between reads for stability
}
Senzor Rotacol SPI
Re: Senzor Rotacol SPI
No. vidím tu toho docela hodně
Zaprvé, našel jste někde jak se se senzorem komunikuje? Zkuste poslat odkaz na tu stránku kde jste našel váš kód. Z datasheetu jsem vyčetl pouze toto: MOSI je to co posílá arduino (Master Out Slave In)
MISO je to co posílá senzor zpět (Master In Slave Out)
Nejspíše, jak to tedy z obrázku vypadá, se musí senzoru posílat 0xFF byty a on na ně odpovídá.
Zkusil bych tedy nejdřív naslouchat co vám senzor vrátí pomocí takového jednoduchého programu:
Tímhle můžete odzkoušet co se vám dostává zpátky a jak to reaguje na otáčení. Výsledky se vytisknou hexadecimálně, tak se vám bude líp zjišťovat co je v datech kde. Cíl je zjistit které bity obsahují hodnotu úhlu.
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Zaprvé, našel jste někde jak se se senzorem komunikuje? Zkuste poslat odkaz na tu stránku kde jste našel váš kód. Z datasheetu jsem vyčetl pouze toto: MOSI je to co posílá arduino (Master Out Slave In)
MISO je to co posílá senzor zpět (Master In Slave Out)
Nejspíše, jak to tedy z obrázku vypadá, se musí senzoru posílat 0xFF byty a on na ně odpovídá.
Zkusil bych tedy nejdřív naslouchat co vám senzor vrátí pomocí takového jednoduchého programu:
Kód: Vybrat vše
#include <SPI.h>
#include <inttypes.h>
int CSn;
uint16_t readbuf[2]; //senzor vrací 2x16bitů
void setup()
{
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
//initialise spi communications as 1MHz
CSn =10;
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV16);
SPI.setDataMode(SPI_MODE1);
pinMode(CSn, OUTPUT);
digitalWrite(CSn, HIGH);
}
void loop()
{
//Aktivuj senzor
digitalWrite(CSn, LOW);
//Zapíšeme první FF, na to senzor nic extra nevrací -> nic nečteme
SPI.transfer(0xFF);
//Zapíšeme 0xFFFF, senzor by nám měl vrátit první slovo, prvních 16b
readbuff[0] = SPI.transfer16(0xFFFF);
//Zapíšeme znovu 0xFFFF, senzor by nám měl druhé první slovo, druhých 16b
readbuff[1] = SPI.transfer16(0xFFFF);
//Zapíšeme poslední FF, senzor nám opět nic extra nevrací
SPI.transfer(0xFF);
//CS na 1 - nechceme dál komunikovat
digitalWrite(CSn, HIGH);
//Vypíšeme obě slova (4 byty)
Serial.print(readbuff[0], HEX);
Serial.print(" / ");
Serial.print(readbuff[1], HEX);
Serial.print(" nebo dohromady pro přehlednost: ");
Serial.print(readbuff[0], HEX);
Serial.print(readbuff[1], HEX);
Serial.println();
delay(1500); // pauza
}
Re: Senzor Rotacol SPI
dakujem za testovaci kod s popisom. Cele to ma logiku,ale bohuzial senzor mi ukazuje aj stymto programom stale nulu.
ten moj prvy kod som vyguglil tu: https://github.com/PeterQFR/SPI-encoder-example.
Ziadny iny manual k senzoru nemam. Iba ten, ktory ste tiez nasiel u megatronu.Senzor mam priamo novy od megatronu.
ten moj prvy kod som vyguglil tu: https://github.com/PeterQFR/SPI-encoder-example.
Ziadny iny manual k senzoru nemam. Iba ten, ktory ste tiez nasiel u megatronu.Senzor mam priamo novy od megatronu.
Re: Senzor Rotacol SPI
senzor uz bezi,kontaktoval som vyrobcu.Stacila mi info ze senzor ma chip mlx90316.z datasheetu chipu uz to slo hladko.
Re: Senzor Rotacol SPI
Super. To je asi ta nejlepší možnost! Možná byste sem ještě mohl dát kód kdyby to někdo hledal tak aby měl z čeho čerpat.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 22 hostů