Hur kan jag få tag på prestandaversionen av Nucleo?
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Daniel: när du mäter och får 10% tillbaka, använder du då bägge kanalerna på oscilloskopet? Om det är överhörning så bör returen se exakt lika dan ut fast med mindre amplitud. Jag kan ingenting om din programmering men sätts utgången på processorn till ingång inför läsning? Jag har råkat ut för det här med 10% kvar på mina arduino när jag programmerat fel och glömt göra om från ut till ingång inför läsning... (egna misstag)
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Sen Daniel, har du ingen kamera i mobilen? Ett kort eller två säger mer än tusen ord. Man kan göra bort sig rejält på ett oscilloskop också, jag vet. Så fota av skärmen så vi andra kan se och få en egen uppfattning om problemen.
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
> Daniel: när du mäter och får 10% tillbaka, använder du då bägge kanalerna på oscilloskopet?
Kan ju vara svårt då:
> Tyvärr så har jag bara en mätkabel.
(Antar att "mätkabel" här avser "prob" till oscilloskopet.)
Fortfarande en av de mer underhållande trådarna...
Kan ju vara svårt då:
> Tyvärr så har jag bara en mätkabel.
(Antar att "mätkabel" här avser "prob" till oscilloskopet.)
Fortfarande en av de mer underhållande trådarna...
- Klas-Kenny
- Inlägg: 11343
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Om jag inte tolkar dina inställningar i CubeMX fel, så har du felinställd CPHA.
Enligt MAX31865 datablad ska CPHA = 1.
Nu har CubeMX ett lite förvirrande sätt att skriva ut, men "1 Edge" torde innebära CPHA=0, sätt istället på "2 Edge" vilket bör ge CPHA=1.
Enligt MAX31865 datablad ska CPHA = 1.
Nu har CubeMX ett lite förvirrande sätt att skriva ut, men "1 Edge" torde innebära CPHA=0, sätt istället på "2 Edge" vilket bör ge CPHA=1.
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Hej!
Nu kommer ett inlägg med mycket information. Jag har dessa inställningar på SPI. När jag börjar skriva min konfiguering så gör jag det via dessa funktioner.
Jag skriver alltså konfigueringen 10100101, vilket har värdet 165. Jag har bara slumpmässigt valt en konfiguering.
Så då skriver jag det. Vi kan se att jag börjar först skriva 128 = 10000000 och sedan 165 = 10100101 SPI klockan tickar på. Notera att SPI klockan har en 1 och en 0 för varje period. Som det ska vara enligt databladet. Och när jag ska läsa så anropar jag dessa funktioner.
Jag förväntar mig 165 = 10100101 tillbaka i buffer, men jag får istället 129 = 10000001. MISO tror jag visar också 129 = 10000001 då det är först en hög sedan många låg och sedan en hög. Sedan blir det en bergochdalbana nedanför. Dock försvinner den sedan efter oscilloskåpet har varit på ett tag.
Nu har jag gjort en liten testlista på vad för värden jag har skickat in och vad jag kan läsa.
Nu kommer ett inlägg med mycket information. Jag har dessa inställningar på SPI. När jag börjar skriva min konfiguering så gör jag det via dessa funktioner.
Kod: Markera allt
/*
* Write to
*/
static void MAX31865_write(MAX31865_SPI* spi, uint8_t* address, uint8_t* data, uint16_t lenght) {
// Enable CE
HAL_GPIO_WritePin(spi->CE_PORT, spi->CE_PIN, GPIO_PIN_RESET);
HAL_SPI_Transmit(spi->hspi, address, 1, 10);
HAL_SPI_Transmit(spi->hspi, data, lenght, 10);
// Disable CE
HAL_GPIO_WritePin(spi->CE_PORT, spi->CE_PIN, GPIO_PIN_SET);
}
/*
* "Konstruktör"
*/
void MAX31865_init(MAX31865_SPI* spi, GPIO_TypeDef* CE_PORT, uint16_t CE_PIN, SPI_HandleTypeDef* hspi, uint8_t WIRES){
// Declare structure
spi->CE_PIN = CE_PIN;
spi->CE_PORT = CE_PORT;
spi->hspi = hspi;
/*spi->SCK_PIN = SCK_PIN;
spi->SCK_PORT = SCK_PORT;
spi->MOSI_PIN = MOSI_PIN;
spi->MOSI_PORT = MOSI_PORT;
spi->MISO_PIN = MISO_PIN;
spi->MISO_PORT = MISO_PORT;*/
spi->WIRES = WIRES;
// CE in reset state
HAL_GPIO_WritePin(spi->CE_PORT, spi->CE_PIN, GPIO_PIN_SET);
// Do default configuration and begin with creating the data
/*
* VBias = OFF
* Conversion mode = Normaly off
* 1-shot = Off
* Fault detection = Fault detection with automatic delay
* Fault Status = Off
* Filter = 60 Hz
*/
uint8_t data = 0x00;
if (spi->WIRES == WIRE3) {
data = 0b00010100; // 3 wire
} else {
data = 0b10100101; // 2 or 4 wire
}
// Data = 165
// 0x80 will convert to WRITE address
uint8_t address = MAX31865_CONFIGURATION | 0x80; // MAX31865_CONFIGURATION = 0x00
MAX31865_write(spi, &address, &data, 1);
}
Så då skriver jag det. Vi kan se att jag börjar först skriva 128 = 10000000 och sedan 165 = 10100101 SPI klockan tickar på. Notera att SPI klockan har en 1 och en 0 för varje period. Som det ska vara enligt databladet. Och när jag ska läsa så anropar jag dessa funktioner.
Kod: Markera allt
/*
* Read from
*/
static void MAX31865_read(MAX31865_SPI* spi, uint8_t* address, uint8_t* buffer, uint16_t lenght) {
// Enable CE
HAL_GPIO_WritePin(spi->CE_PORT, spi->CE_PIN, GPIO_PIN_RESET);
HAL_SPI_Transmit(spi->hspi, address, 1, 10);
HAL_SPI_Receive(spi->hspi, buffer, lenght, 10);
// Disable CE
HAL_GPIO_WritePin(spi->CE_PORT, spi->CE_PIN, GPIO_PIN_SET);
}
/*
* Get the configuration
*/
uint8_t MAX31865_configuration(MAX31865_SPI* spi){
uint8_t address = MAX31865_CONFIGURATION;
uint8_t buffer;
MAX31865_read(spi, &address, &buffer, 1);
return buffer;
}
Kod: Markera allt
// Skriv: 10000000 = 128. Läs: 10000000 = 128
// Skriv: 11000000 = 192. Läs: 11000000 = 192
// Skriv: 11100000 = 224. Läs: 11100000 = 224
// Skriv: 11110000 = 240. Läs: 11110000 = 240
// Skriv: 11110001 = 241. Läs: 11110000 = 241
// Skriv: 11110011 = 243. Läs: 11110000 = 241 <-- Felläsning
// Skriv: 11111000 = 248. Läs: 10010000 = 144 <-- Felläsning
// Skriv: 11111100 = 252. Läs: 10010000 = 144 <-- Felläsning
// Skriv: 11111110 = 254. Läs: 10010000 = 144 <-- Felläsning
// Skriv: 11111111 = 255. Läs: 10010001 = 145 <-- Felläsning
// Skriv: 10000000 = 128. Läs: 10000000 = 128
// Skriv: 01000000 = 64. Läs: 01000000 = 64
// Skriv: 00100000 = 32. Läs: 00100000 = 32
// Skriv: 00010000 = 16. Läs: 00110000 = 48 <-- Felläsning
// Skriv: 00001000 = 8. Läs: 00100000 = 32 <-- Felläsning
// Skriv: 00000100 = 4. Läs: 00100000 = 32 <-- Felläsning
// Skriv: 00000010 = 2. Läs: 00100000 = 32 <-- Felläsning
// Skriv: 00000001 = 1. Läs: 00100001 = 33 <-- Felläsning
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Klas-Kenny
- Inlägg: 11343
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Läs på i databladet vad config-registret du skriver till förväntas returnera vid läsning.
Du sätter bit 7, 5 , 2, 0 höga.
Bit 7: VBIAS; 1 -> on, helt OK
Bit 5: 1-shot; 1 -> 1-shot (auto-clear)
Bit 2: Tabell 3; D3=0,D2=1 -> "Automatic fault detection still running" vid läsning
Bit 0: 50/60Hz filter select; 1 -> 50 Hz helt OK
Så, de bitar som blir noll när du läser, är helt enligt förväntan. Din kommunikation verkar fungera.
Du kan inte anta att du alltid kan läsa tillbaka vad du satt ett register till, helt oförändrat...
Du sätter bit 7, 5 , 2, 0 höga.
Bit 7: VBIAS; 1 -> on, helt OK
Bit 5: 1-shot; 1 -> 1-shot (auto-clear)
Bit 2: Tabell 3; D3=0,D2=1 -> "Automatic fault detection still running" vid läsning
Bit 0: 50/60Hz filter select; 1 -> 50 Hz helt OK
Så, de bitar som blir noll när du läser, är helt enligt förväntan. Din kommunikation verkar fungera.
Du kan inte anta att du alltid kan läsa tillbaka vad du satt ett register till, helt oförändrat...
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Jag har för mig att auto-clear är bara när man har anropat att läsa temperaturfunktionen.
Men det stämmer det du säger angående om fault_error.
Om jag skriver 00010000 = 16 och läser så får jag 00110000 = 48.
Om jag skriver 00000000 = 0 och läser så får jag 00100000 = 32.
Alltså måste det betyda att one-shot blir automatiskt 1. Om jag testar skriva 01000000 = 64. Då kankse jag får tillbaka 01000000 = 64. Nix fick tillbaka 01100000 = 96.
Men det kanske ska vara så?
Edit:
Nu ändrade jag SPI klockan lite och nu börjar det allt mer stämma!
Edit2:
Lite mera finslipning innan jag lägger upp en bild! Tack KalasKenny för du gav mig en notering
Men det stämmer det du säger angående om fault_error.
Om jag skriver 00010000 = 16 och läser så får jag 00110000 = 48.
Om jag skriver 00000000 = 0 och läser så får jag 00100000 = 32.
Alltså måste det betyda att one-shot blir automatiskt 1. Om jag testar skriva 01000000 = 64. Då kankse jag får tillbaka 01000000 = 64. Nix fick tillbaka 01100000 = 96.
Men det kanske ska vara så?
Edit:
Nu ändrade jag SPI klockan lite och nu börjar det allt mer stämma!
Edit2:
Lite mera finslipning innan jag lägger upp en bild! Tack KalasKenny för du gav mig en notering
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Sådär ja! Ställde den på golvet i verkstaden. Det saknas dock ingång för 12 volt DC ingång.
Gröna lampan betyder att regleringen är aktiv.
Gula lampan betyder att identifieringen är aktiv.
Gröna lampan betyder att regleringen är aktiv.
Gula lampan betyder att identifieringen är aktiv.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Nu snackar vi! Ett äkta alster. Att den skall mäta tre olika temperaturer och reglera det ser jag men vad skall du ha den till? Skall man koka brännvin räcker väl en temperatur?
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
nu får vi äntligen se den otroligt billiga och enkla regulatorn....
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Alster?Janson1 skrev:Nu snackar vi! Ett äkta alster. Att den skall mäta tre olika temperaturer och reglera det ser jag men vad skall du ha den till? Skall man koka brännvin räcker väl en temperatur?
Jag ska värma vatten bara. Sedan bygger jag något nytt. Funderar nu på en internetradio. Dock ska det bli med Raspberry Pi + Java. STM32 blir allt för svårt.
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Jo du!svanted skrev:nu får vi äntligen se den otroligt billiga och enkla regulatorn....
Denna är billigare än en industriell PID från dyr-Ahlsell.
Enkel är den inte. Målet med denna regulator är att den ska vara svår. Det är ju bara ett experiment.
Re: Hur kan jag få tag på prestandaversionen av Nucleo?
Nej, den är inte billigare än en PLC från Ahlsell, den stora skillnaden är att den du köper på Ahlsell får du installera, din får inte installeras, då den sakar CE-märkning.