Är en STM32 bra att använda som USB I/O-modul?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Rick81: Men det där är inte så som ST tänk att man ska göra interrupter i HALen, cubeMX skapar den stomme du visar och anger en callbackfunktion som användaren ska implementera. Men det är ju enklare så som du visar...
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Rick81 »

Al_Bundy skrev:Eller så lägger jag bara koden på minnet och övar massa olika exempel med HAL. Jag kommer få det jobbigt om jag byter plattform t.ex. PIC eller AVR. Men förhoppningsvis så gör jag inte det då det är jag som bestämmer vilken plattform kunden ska ha.

Men det är väll så med alla högnivså språk? Jag menar, jag programmerar mycket i Java. Men skulle jag och sätta mig vid Python så skulle jag vara på ruta noll igen. Att kunna språk är en sak, men att kunna applicera språket i verkligheten är en annan sak som kräver mycket kännedom om vad som finns och vad som fungerar?

Eller är det så att kan man AVR, så kan man PIC, Infineon, STM32, AMD, Intel osv helt utan problem?

Alla processorer är olika, men grunden fungerar i stort sett likadant. Kan man hantera ex interupt i en AVR/PIC är det mycket lättare implementera interupt i en stm32.
Rick81
Inlägg: 755
Blev medlem: 30 december 2005, 13:07:09

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Rick81 »

AndLi skrev:Rick81: Men det där är inte så som ST tänk att man ska göra interrupter i HALen, cubeMX skapar den stomme du visar och anger en callbackfunktion som användaren ska implementera. Men det är ju enklare så som du visar...

Nej det är inte helt enligt cubemx, men kollar man exemplen i HAL är det så det brukar vara implemtenterat.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Det är lustigt!

Jag har gjort så att jag har en räknare som räknar hela tiden. Jag läser räknaren. Men när räknaren slår runt så ska jag läsa ett ADC värde.

Kod: Markera allt

uint32_t IN0;
uint32_t IN1;
uint32_t IN4;
uint8_t sendMessage[] = "Hello world!";
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {

	IN0 = HAL_ADC_GetValue(&hadc1);
	IN1 = HAL_ADC_GetValue(&hadc1);
	IN4 = HAL_ADC_GetValue(&hadc1);
}
/* USER CODE END 0 */

/**
 * @brief  The application entry point.
 * @retval int
 */
int main(void) {
	/* USER CODE BEGIN 1 */

	/* USER CODE END 1 */
while (1) {
		/* USER CODE END WHILE */
		uint32_t countValue = htim3.Instance->CNT;
		//HAL_UART_Transmit(&huart2, &sendMessage, sizeof(sendMessage), 10);

		if (countValue >= 0 && countValue < IN0) {
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
		} else if (countValue >= IN0 && countValue <= 1023) {
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
		} else {

		}
		/* USER CODE BEGIN 3 */
	}
Men problemet är att funktionen ovan läses bara en en gång. Inget mera.
Användarvisningsbild
AndLi
Inlägg: 18251
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av AndLi »

Din interrupt? Nollas interruptbiten så den kan triggas igen?
Glattnos
Inlägg: 3102
Blev medlem: 29 oktober 2009, 20:01:18

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Glattnos »

Al_Bundy skrev:Fråga: Eller är QP i detta fall inte "istället för" PID utan ett sätt att "förfina" PID-regleringen?
Svar: Nej. QP har ingen P,I eller D. QP minimerar en kvadratisk kostfunktion via programmering. Därför heter det Quadratic Programming. Modern teknik som finns i de flesta bilar, rymdsonder, reaktorer osv för att få ett fint resultat.

Det är väldigt mycket matematik man måste kunna tillämpa.
Tack för svaren.
Men för att kunna reglera nått så krävs ju någon typ av IN-signal. Om QP inte använder sig av vare sig signalens ÄR-värde jämfört emot BÖR-värdet, signalens integral eller signalens förändringshastighet. Hur kan den då ge ett bra svar endast med hjälp av mer matte?

Som exempel kan vi ta en flygdator till en drönare. Om man vet helt säkert hur drönarens hårdvara ser ut och gör fysiska tester så är jag med på att man kan testa fram en matematisk modell för att räkna ut gaspådrag för motorerna baserat på gyro-sensorernas IN-värden. Men vad händer när en propeller blir skadad och dels orsakar vibrationer och dels ger sämre effekt, då stämmer ju inte den matematiska modellen längre?

Fattar jag rätt att QP är en typ av beräknings-metod och inte ett substitut för en PID?
Senast redigerad av Glattnos 4 januari 2019, 17:06:05, redigerad totalt 1 gång.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Ja. Den har update event aktiverad.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46930
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av TomasL »

Fattar jag rätt att QP är en typ av beräknings-metod och inte ett substitut för en PID?
Det verkar som att man främst använder det till att beräkna genomströmning i ett lager, för att få bättre orderplanering, eller beräkna kundgenomströmning och liknande applikationer.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46930
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av TomasL »

Al, vad Andli menade är att du alltid i interuptkoden nollställa interruptet, annars kan det liksom inte hända igen.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Glattnos skrev:
Al_Bundy skrev:Fråga: Eller är QP i detta fall inte "istället för" PID utan ett sätt att "förfina" PID-regleringen?
Svar: Nej. QP har ingen P,I eller D. QP minimerar en kvadratisk kostfunktion via programmering. Därför heter det Quadratic Programming. Modern teknik som finns i de flesta bilar, rymdsonder, reaktorer osv för att få ett fint resultat.

Det är väldigt mycket matematik man måste kunna tillämpa.
Tack för svaren.
Men för att kunna reglera nått så krävs ju någon typ av IN-signal. Om QP inte använder sig av vare sig signalens ÄR-värde jämfört emot BÖR-värdet, signalens integral eller signalens förändringshastighet. Hur kan den då ge ett bra svar endast med hjälp av mer matte?

Som exempel kan vi ta en flygdator till en drönare. Om man vet helt säkert hur drönarens hårdvara ser ut och gör fysiska tester så är jag med på att man kan testa fram en matematisk modell för att räkna ut gaspådrag för motorerna baserat på gyro-sensorernas IN-värden. Men vad händer när en propeller blir skadad och dels orsakar vibrationer och dels ger sämre effekt, då stämmer ju inte den matematiska modellen längre?

Fattar jag rätt att QP är en typ av beräknings-metod och inte ett substitut för en PID?
Jo. Lyssna här. Du har en kostfunktion:

J = ((R-Y)-U)^2

Vi kvadrerar den för att inte få negativa tal. U är våran insignal och X är våran utsignal. Y är beroende av U och om R, referensen, är lika med Y så kommer J = U. Detta är alltså perfekt reglering då. Men i verkligheten blir det inte så.

MATLAB:

Kod: Markera allt

>> t = linspace(0,10); % Tio sekunder
>> u = sin(2*t); % Våran insignal;
>> G = tf(1, [1 2 3]); % Matematisk modell;
>> y = lsim(G, u, t); % Simulering av matematisk modell;
>> R = 0.1; % Våran referens (börvärde)
>> J = abs((R-y)-u); % Kostfunktion
>> figure(2); plot(1:length(J), J)
>> hold on
>> plot(1:length(u), u, 'r')
Insignal
Skärmbild från 2019-01-04 17-10-06.png
Här kan vi se att våran bästa insignal är alltså 0.335

Kod: Markera allt

>> [val, index] = min(J);
>> size(index)
ans =

   1   1

>> index
index =  96
>> u(index)
ans =  0.33571
>>
Skärmbild från 2019-01-04 17-14-53.png
Om jag applicerar en konstant insignal av 0.335 hela tiden så kommer jag få väldigt nära 0.1. Nu gjorde jag en "QP" optimering med bara en insignal, och där av resultatet. Desto fler insignaler jag prövar, desto bättre urval har jag.
Skärmbild från 2019-01-04 17-30-21.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Al_Bundy 4 januari 2019, 17:32:36, redigerad totalt 3 gånger.
svanted
Inlägg: 5276
Blev medlem: 30 augusti 2010, 21:20:38
Ort: Umeå

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av svanted »

jag fattar absolut inget, om man har ett är värde som ska regleras mot ett börvärde gör man det propotionellt,
vill man ha snabbare stegsvar använder man derivatan,
och vill man ha högre nogrannhet använder man integralen,
vad är teorin bakom att göra på något annat sätt?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

TomasL skrev:Al, vad Andli menade är att du alltid i interuptkoden nollställa interruptet, annars kan det liksom inte hända igen.
Hur gör jag det? Jag har bara följt denna:
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

svanted skrev:jag fattar absolut inget, om man har ett är värde som ska regleras mot ett börvärde gör man det propotionellt,
vill man ha snabbare stegsvar använder man derivatan,
och vill man ha högre nogrannhet använder man integralen,
vad är teorin bakom att göra på något annat sätt?
Derivator, Integraler fingerar fint. Men tänk om du har en bil utan bromsar. Den enda bromsningen du har är allt luftmotstånd och friktion från vägen. Då gäller det att du måste ha en bra optimerad fot på gaspedalen.

Exempel på system som inte har någon "broms" är temperatur och flöde. Processindustrin använder sig alltid av prediktiv reglering. PID fungerar utmärkt för t.ex. servomotorer där man kan "vrida åt andra hållet" om det gick fel.

Vem har en kylare i sin tekokare? :D
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46930
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av TomasL »

Al_Bundy skrev:
TomasL skrev:Al, vad Andli menade är att du alltid i interuptkoden nollställa interruptet, annars kan det liksom inte hända igen.
Hur gör jag det? Jag har bara följt denna:
RTFM istället.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Är en STM32 bra att använda som USB I/O-modul?

Inlägg av Al_Bundy »

Jag ger upp. Jag fortsätter som vanligt. Det fungerar ändå så.
Skriv svar