Vis indlæg

Denne sektion tillader dig at se alle indlæg oprettet af dette medlem. Bemærk at du kun kan se indlæg der er oprettet i områder du i øjeblikket har adgang til.


Beskeder - dani8303

Sider: [1] 2 3 ... 5
1
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: August 07, 2023, 09:53:31 »
Hej Niels,

1: 3: -> Der skulle ikke være noget i vejen for at sætte en buck-converter ind. Du bør købe en med CC(Constant current), hvorved der er strømbegrænsning. Det tænker jeg hjælper på at den starter så hårdt. Eksempelvis: https://www.ebay.com/itm/155673323276

2: -> Jeg kan ikke se nogen let løsning på dette. Skal dette rettes så skal der noget helt andet elektronik til, som er væsentligt mere kompliceret. Så er det nok lettere bare at udskifte alt bilens elektronik med noget andet.

Dejligt at høre at det virker ;)

2
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: Juni 25, 2023, 17:17:44 »
Nu ved jeg ikke hvor stor motoren er. Min fornemmelse siger dog at det burde være fint. Hvis den skal bruge over 30A, så er det over 500W. Så meget tænker jeg ikke den bruger.

3
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: Juni 24, 2023, 18:53:02 »
Ja der findes rigtig mange forskellige dioder. Du skal dog bare have fat i en helt "almindelig" diode. Det kunne være sådan en her: https://www.conradelektronik.dk/p/diotec-ensretterdiode-1n4935-do-41-200-v-1-a-2806761 . Et relæ til denne opgave burde ikke bruge over 1A, så de burde fint kunne klare opgaven. Her er en hel liste: https://www.conradelektronik.dk/o/dioder-standardhfeffekt-6203020?ATT_MOUNTING_METHOD_any=Gennemstikningsmontage&ATT_NUM_FORWARD_CURRENT_any=1%20A

4
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: Juni 24, 2023, 13:16:22 »
Det burde kunne laves sådan her:

https://b.dannerelv.dk/SharedFiles/ElektronokForum_Hbro_RELEY_OldMot.JPG
De to dioder gør at kun et af relæerne bliver aktiveret. Hvilket der bliver aktiveret vil afhænge af polariteten til "gammel motor".

5
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: Juni 24, 2023, 12:43:06 »
Hej Niels,

Jeg har prøvet at tegne det selv, så nogle bedre symboler er brugt.

https://b.dannerelv.dk/SharedFiles/ElektronokForum_Hbro_RELEY.JPG
Jeg har også adskilt så styrestømmen køres for sig selv. Hvis jeg skal forklare det så kommer strømmen +BATT ned til begge relæer. Det begge relæers NC(normalt sluttet). Det gør at relæerne begge sender +BATT videre til motoren. Der står altså sammen spænding på begge terminaler, hvorved motoren intet gør.

 Du trykker nu "SW_Push_FREM" ned. Herved skifter relæet til højre stilling. I stedet for at tage strømmen til motoren fra terminal 12, vil den nu i stedet have tilsluttet 14 til 11. Herved løber der -BATT ned til motoren på dennes terminal 2. Terminal 1 på motoren vil stadig få +BATT fra relæet til venstre. Da der +BATT på motorens + terminal og -BATT på motorens - terminal, så vil motoren nu køre fremad.

Slipper du nu knappen "SW_Push_FREM" og trykker på knappen "SW_Push_BAK". Herved bliver relæet til venstre aktiveret i stedet. Herved vil der komme -BATT ned til motorens terminal 1. På motorens terminal 2 vil der stå +BATT. Der er altså byttet om på + og - ved motoren, herved vil motoren bakke i stedet.

Håber det hjælper.

6
Generel Elektronik / Sv: Motorrelæ til elektrisk legetøjsbil
« Dato: Juni 23, 2023, 13:27:42 »
Hej Niels,

Du skal bare have fat i 2 styk skifterelæer. Så skal du sættes op som en H-bro. Se billede lånt fra nettet:
Du kan også bare prøve at søge h-bridge. Der er en masse om det derude. Håber det hjælper dig på vej.

Venlig hilsen Daniel Dannerelv

7
Generel Elektronik / Sv: Stepper kontrol
« Dato: Maj 28, 2023, 21:24:47 »
Hej Tommy

Jeg kender ikke til noget færdigt board der gør præcist det du ønsker. Du kan dog få næsten samme funktionalitet med en "standard" stepper driver. Der er grundlæggende 2 indgange. "Step" som beder stepperne tage en bevægelse. Så er der "dir" som bestemmer hvilken retning den skal tage bevægelsen.

Så skal stepper driveren selvfølgelig også have noget strøm og så videre. De kommer normalt med et lille potmeter, hvor strømmen kan stilles. Stilles strømmen for høj brænder stepper motoren af på sigt. Stilles den for lavt får stepperne ikke fuld kraft/moment.

Der findes en masse forskellige stepper drivers. Her kan nævnes A4988, som er meget brugt. Her er et pinout som eksempel . Håber det kan hjælpe dig igang.

Venlig hilsen
Daniel Dannerelv

8
Arduino & Lign. / Sv: arduino reset
« Dato: December 29, 2022, 09:45:23 »
Ohøj

Læsningen skal ligge i setup. Her skal du overføre fra filen til variablen.

Skrivningen til filen skal så ske i loop'et, hvorved der løbende laves en backup af datane.

Husk du skal bruge .read() for at læse fra filen, når du har en reference åben. Her er et udsnit fra de officielle eksempler:
"""
// re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
"""
https://github.com/arduino-libraries/SD/blob/master/examples/ReadWrite/ReadWrite.ino
Håber det giver mening.

Venlig hilsen Daniel Dannerelv

9
Arduino & Lign. / Sv: arduino reset
« Dato: December 28, 2022, 23:51:47 »
Hej

Har du prøvet at skrive til en fil på SD-kortet løbende(overskrivning), når forbruget ændres. Ved opstart læser du fra filen på SD-kortet og overføre det til variablen med forbruget.

Det samme skulle også sagtens kunne lade sig gøre med EEPROM.

Det er dog vigtig at tage stilling til hvad der sker hvis en skriveoperation er i gang, ved en strømafbrydelse. Her kunne der med fordel arbejdes med 2 kloner af dataene og en "Writing" bit for hver klon. Når du skal opdatere sættes "Writing" bit til høj, indtil opdateringen er fuldført. Efter en strømafbrydelse tjekkes "Writing" bit så, hvis den er sat til høj, så vælges den anden klon. På denne måde er der altid en gyldig kopi.

10
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 26, 2022, 17:29:24 »
Lige en lille sidenote Icecap, så kan det øverste kode du foreslår godt give problemer. Du risikere nemlig at det ikke virker efter de cirka 50 dage. Det er lidt langhåret at forklare, men hvad nu hvis X beregnes til 4.294.967.295. Dermed findes der ikke noget tal større, hvormed koden aldrig vil blive aktiveret igen.

Prøv at læse denne artikel: https://www.norwegiancreations.com/2018/10/arduino-tutorial-avoiding-the-overflow-issue-when-using-millis-and-micros/

Det har jeg nemlig haft fundet ud af på den trælse måde :o.

Og ja der er mange måder at lave det på  ;). Det kode til tidshåndtering jeg sendte tidligere kører dog ganske fortræffeligt. Har det til at kører på flere ESP8266, hvor flere af disse har kørt adskillige måneder uden problemer :D.

11
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 25, 2022, 18:59:50 »
Hej Dan

Så det var hvad det var til.

Angående tider, så kan arduino sagtens håndtere det du efterspørger. Du skal bruge millis(), hvor denne først får overflow efter cirka 50 dage. Her er et eksempel hvor der skrives en linje hver 6 time:
unsigned long lastime = 0;
  unsigned long interval = 1000 * 60 * 60 * 6; //s * min * time * antal timer
  void loop(void){
    if((millis()-lasttime) > interval){
      Serial.println("Der er nu gået 6 timer siden sidst");
      lastime = millis();
    }



  }

12
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 25, 2022, 12:17:33 »
Haløj Dan

Den kigger på om den nye gennemsnitstemperatur variere for meget fra den tidligere målte, altså overskrider hysteresen. Prøv at udskrive "current_temp" samtidig med. Det er nemlig den relæerne bliver sat efter. Så tror det begynder at give mening 😉.

Hvis "current_temp" er blevet indlæst til 7,65, så skal avg beregnes til minimum 7,86 før at der sker en opdatering. For nedadgående er det 7,44 eller mere den skal variere. Det skyldes netop at hysteresen (temp_hys) er sat til 0,2.

Programmering er rigtigt godt til at sætte de små grå på arbejde😁.

13
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 25, 2022, 09:59:39 »
Hej Dan

1.
Ja du kan fjerne det, men gennemsnit løser ikke hele din udfordring. Hvad nu hvis gennemsnit beregnes til 25,99 det ene øjeblik og 26,01 det næste. Herefter så tilbage til 25,99. Når temperaturen står lige på vippen, så vil det stadig kunne give udfordringer, men med 20 målinger og delay 1000, så er sandsynligheden ikke særlig stor. Du kan dog roligt sætte temp_hys længere ned. Eksempelvis 0,05.

2:
Det kan sagtens lade sig gøre. Det synes jeg næsten selv du skal forsøge at ligge ind. Det burde du sagtens kunne finde ud af, ellers så bare skriv.

14
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 24, 2022, 16:50:35 »
Jeg har haft brugt det her bibliotek:
https://github.com/PaulStoffregen/OneWire

Dog en ældre version. Virker fint på både almindelig arduino(atmega328) og ESP8266.

15
Arduino & Lign. / Sv: Gennnemsnit temp.
« Dato: September 24, 2022, 16:24:24 »
Tror jeg ved hvad fejlen er. Det var ikke meningen der skulle stå += i den linje. Kun =.
Prøv det her:
#include <OneWire.h>
#include <DallasTemperature.h>

float Temp1 = 22.0;
float Temp2 = 24.0;
float Temp3 = 26.0;
float Temp4 = 28.0;
float Temp5 = 30.0;
float Temp6 = 32.0;
float Temp7 = 29.0;
float Temp8 = 30.0;   
float Temp9 = 31.0;

#define ONE_WIRE_BUS 2
#define K101 3
#define K102 4
#define K103 5
#define K104 6
#define K105 7
#define K106 8
#define K107 9
#define K108 10

// Buffer til opbevaring af værdier mens de behandles
bool K101_buffer = 0;
bool K102_buffer = 0;
bool K103_buffer = 0;
bool K104_buffer = 0;
bool K105_buffer = 0;
bool K106_buffer = 0;

//Værdi der bruges til beregninger:
float current_temp = 0;
float temp_hys = 0.2;//Hysteresis. Prøv at google det. Så står relæerne ikke og danser.

//Bruges til gennemsnit
float temp_avg_sum = 0;//Summen der bruges til beregning af gennemsnit
int temp_avg_runs = 0;//Antal beregninger der indgår i gennemsnittet
int Number_of_runs = 10;//Hvor mange målinger der skal udgøre en gennemsnitsberegning

 
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 
void setup(void)
{
  Serial.begin(9600);
  pinMode(K101, OUTPUT);
  pinMode(K102, OUTPUT);
  pinMode(K103, OUTPUT);
  pinMode(K104, OUTPUT);
  pinMode(K105, OUTPUT);
  pinMode(K106, OUTPUT);
  pinMode(K107, OUTPUT);
  pinMode(K108, OUTPUT);
   

  sensors.begin();
}
 
void loop(void)
{
  if(temp_avg_runs<Number_of_runs){
    sensors.requestTemperatures();
    float current_temp_unhandled = sensors.getTempCByIndex(0);
    temp_avg_sum += current_temp_unhandled;//Lægger den nye måling til den summerede værdi.
    temp_avg_runs++; //Der er blevet tilføjet endnu en måling til den summerede værdi.
    Serial.print("Ude Temperatur: ");
    Serial.println(current_temp_unhandled);
  }else{//Der er nu foretaget nok målinger til at beregne et gennemsnit.

    float temp_avg_unhandled = temp_avg_sum / temp_avg_runs;//Beregner gennemsnit. Summerede værdi delt med antal målinger
    temp_avg_sum = 0;//Nulstiller, så der tages nye målinger næste gang loop køres
    temp_avg_runs = 0;
    //Bestemmer om temperaturen skal opdateres. Sikre at relæet ikke danser.
    //ABS() tager længden af værdien 10-> 10 og -10 -> 10. Altså fjerner minus fortegn..
    if(abs(temp_avg_unhandled-current_temp)>temp_hys){
      current_temp = temp_avg_unhandled;
    }else{
      Serial.println("Ingen opdatering af temperatur");
    }
 

    //I udgangspunktet skal de alle være slukket
    K101_buffer = 0;
    K102_buffer = 0;
    K103_buffer = 0;
    K104_buffer = 0;
    K105_buffer = 0;
    K106_buffer = 0;
 

    if(current_temp >= Temp5)
    {
      K106_buffer = 1;
    }
    else if(current_temp >= Temp4)
    {
      K105_buffer = 1;
    }
    else if(current_temp >= Temp3)
    {
      K104_buffer = 1;
    }
    else if(current_temp >= Temp2)
    {
      K103_buffer = 1;
    }
    else if(current_temp >= Temp1)
    {
      K102_buffer = 1;
    }else {
      K101_buffer = 1;
    }

    //Sender buffer til pins
    digitalWrite(K101, K101_buffer);
    digitalWrite(K102, K102_buffer);
    digitalWrite(K103, K103_buffer);
    digitalWrite(K104, K104_buffer);
    digitalWrite(K105, K105_buffer);
    digitalWrite(K106, K106_buffer);
  }
 
   
   
   
    delay(200);//Sat ned fra 2s til 0,2s, da antal målinger til gennemsnit er 10, hvorved relæerne opdateres med samme hastighed.
  }

Sider: [1] 2 3 ... 5