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.
			
			
									
									
						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 1 host