Hur kan jag få tag på prestandaversionen av Nucleo?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Vad är det?
Janson1
Inlägg: 1351
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Janson1 »

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)
Janson1
Inlägg: 1351
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Janson1 »

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.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av sodjan »

> 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...
Användarvisningsbild
Klas-Kenny
Inlägg: 11328
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Klas-Kenny »

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.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

Hej!

Nu kommer ett inlägg med mycket information. Jag har dessa inställningar på SPI.
Selección_037.png
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);
}
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
Selección_034.png
SPI klockan tickar på. Notera att SPI klockan har en 1 och en 0 för varje period. Som det ska vara enligt databladet.
Selección_036.png
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;
}
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.
Selección_035.png
Nu har jag gjort en liten testlista på vad för värden jag har skickat in och vad jag kan läsa.

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.
Användarvisningsbild
Klas-Kenny
Inlägg: 11328
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Klas-Kenny »

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...
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

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! :tumupp:

Edit2:
Lite mera finslipning innan jag lägger upp en bild! :) Tack KalasKenny för du gav mig en notering :)
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

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.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Janson1
Inlägg: 1351
Blev medlem: 1 december 2016, 09:06:02
Ort: Marks Kommun

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av Janson1 »

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?
svanted
Inlägg: 5083
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av svanted »

nu får vi äntligen se den otroligt billiga och enkla regulatorn.... :tumupp:
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

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?
Alster?

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.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av DanielM »

svanted skrev:nu får vi äntligen se den otroligt billiga och enkla regulatorn.... :tumupp:
Jo du!
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.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur kan jag få tag på prestandaversionen av Nucleo?

Inlägg av TomasL »

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.
Skriv svar