Elektrická jednokolka

aneb pokec o vsem co se netyka CNC
takova nase CNC hospudka

Moderátor: sysel

Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

11. 7. 2013, 8:57

nestálo by zato udělat přímo na ten motor planetovou převodovku a dát tam volnoběžku a přez ozubený řemen ven na kolo ?
když budeš mít čas tak sem dej nějaké video jak to sviští
lubos
Sponzor fora
Příspěvky: 5057
Registrován: 2. 5. 2007, 3:47
Bydliště: Praha

11. 7. 2013, 9:40

volnoběžku jsme dali na to velké převodové kolo byla to pakárna ale šlo to. Planetovka by byla asi pěkná ale cena ,hlučnost, životnost je dost špatná, taky díky tomu že to mám na oběžce by to byl trochu problém. Pominu to že ta planetovka musí dát třeba i 3Kw. Zítra možná zkusíme udělat nějakou maximálku tak zkusím udělat video.
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

5. 8. 2013, 7:51

tak mám téměř hotovou mechanickou část mého segwaje ,
zatím jsem jej testoval na elektronice co mám postavenou pro jednokolku a po chvíli hraní se mi podařilo odpálit mosfety v jedné větvy
regulátor mám postavený viz schéma v příloze , jen místo budiče fetu HIP tam mám dva kusy IR2101
tranzistory tam mám IRLZ44N vždy 3 paralelně v jedné větvy proud motoru by se měl vejít do 25A při 24V

Fety maj slušnou rezervu proč tedy odešly ? chladič mám taky dost velký ( z měniče 12/230v) teplota byla někde na 40°C

Proč tedy odešly ? jediné co jsem měl tak kondenzátor u napájení jen 470uF , a jiné budiče (IR2101)
osmc3-2 sch.pdf
(75.83 KiB) Staženo 470 x
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22896
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 8. 2013, 8:03

nemas tam maly spozdeni spinani/rozpinani?
to by se ti mohlo slusnout napeti vertikalne mustkem protoze horni pulka zustane jeste otevrena a spodni uz se otevira

to bude zaviset prave narychlosti spinani/rozpinani v tve kombinaci tranzistoru a budice pripadne nastavenem spozdeni (paklize jde)

dal taky hraje velkou roli indukcnost motoru a jeji osetreni, diody ve fetech zpravidla nestaci
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

5. 8. 2013, 8:50

spoždění je nastavené snad s rezervou , program pro to jsem nepsal já , ale je odzkoušen a s tímto zapojením funkční
Osobně si myslím že může být problém v malé kapacitě kterou jsem použil , Prohledal jsem hodně schemat h můstků a nikde ty diody v mosfetech neposilovaly , tak předpokládám že to dají ???


jen pro zajímavost kod pro arduino pro dva můstky :


// This is the main code, it should run on the Arduino.
// Read PPM signals from 2 channels of an RC reciever and convert the values to PWM in either direction.
// digital pins 3 & 11 provide PWM control motor1, digital pins 9 & 10 provide PWM control motor2.
// DP 12 and 13 are neutral indicator lights.
// DP 2 and 6 are inputs from the R/C receiver.
// JDW 2010

// leave pins 0 and 1 open for serial communication

int ppm1 = 2;
int ppm2 = 6;

int motor1_BHI = 7;
int motor1_BLI = 3; // PWM pin
int motor1_ALI = 11; // PWM pin
int motor1_AHI = 8;

int motor2_BHI = 5;
int motor2_BLI = 10; //PWM pin
int motor2_ALI = 9; //PWM pin
int motor2_AHI = 4;

int ledPin1 = 12;
int ledPin2 = 13;

int current_sense_1;
int current_sense_2;

int current_limit = 25; // sets the amperage limit that when exceeded on either motor, tells the motor driver to cut power to both motors for 1 second.

unsigned int servo1_val;
int adj_val1;
int servo1_Ready;

unsigned int servo2_val;
int adj_val2;
int servo2_Ready;

unsigned int servo3_val;
int adj_val3;
int servo3_Ready;

int deadband_high = 275;
int deadband_low = 235;

int pwm_ceiling = 256;
int pwm_floor = 255;

// You can adjust these values to calibrate the code to your specific radio - check the Serial Monitor to see your values.
int low1 = 1100;
int high1 = 1900;
int low2 = 1100;
int high2 = 1900;

void setup() {

TCCR1B = TCCR1B & 0b11111000 | 0x01; // change PWM frequency on pins 9 and 10 to 32kHz
TCCR2B = TCCR2B & 0b11111000 | 0x01; // change PWM frequency on pins 3 and 11 to 32kHz

Serial.begin(9600);

//motor1 pins
pinMode(motor1_ALI, OUTPUT);
pinMode(motor1_AHI, OUTPUT);
pinMode(motor1_BLI, OUTPUT);
pinMode(motor1_BHI, OUTPUT);

//motor2 pins
pinMode(motor2_ALI, OUTPUT);
pinMode(motor2_AHI, OUTPUT);
pinMode(motor2_BLI, OUTPUT);
pinMode(motor2_BHI, OUTPUT);

//led's
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);

//PPM inputs from RC receiver
pinMode(ppm1, INPUT);
pinMode(ppm2, INPUT);

}

void pulse(){

servo1_val = pulseIn(ppm1, HIGH, 20000);

if (servo1_val > 800 && servo1_val < 2200){
servo1_Ready = true;
}
else {
servo1_Ready = false;
servo1_val = 1500;
}

servo2_val = pulseIn(ppm2, HIGH, 20000);

if (servo2_val > 800 && servo2_val < 2200){
servo2_Ready = true;
}
else {
servo2_Ready = false;
servo2_val = 1500;
}

}

void loop() {

// read current sensors on motor-controller
current_sense_1 = analogRead(1);
current_sense_2 = analogRead(2);

//////// determine which direction each motor is spinning

if (current_sense_1 > 512){
current_sense_1 = current_sense_1 - 512;
}
else {
current_sense_1 = 512 - current_sense_1;
}

if (current_sense_2 > 512){
current_sense_2 = current_sense_2 - 512;
}
else {
current_sense_2 = 512 - current_sense_2;
}

//////// adjust the directional value into Amperes by dividing by 13.8

current_sense_1 = current_sense_1 / 13.8;
current_sense_2 = current_sense_2 / 13.8;

//////// if either Ampere value is above the threshold, stop both motors for 1 second

if (current_sense_1 > current_limit || current_sense_2 > current_limit){
m1_stop();
m2_stop();
delay(1000);
}

pulse(); // gather pulses from the R/C

if (servo1_Ready) {

// channel 1
adj_val1 = map(servo1_val, low1, high1, 0, 511);
adj_val1 = constrain(adj_val1, 0, 511);

if (adj_val1 > 511) {
adj_val1 = 511;
}
else if (adj_val1 < 0) {
adj_val1 = 0;
}
else {
}

if (adj_val1 > deadband_high) {
m1_forward(adj_val1 - pwm_ceiling);
}
else if (adj_val1 < deadband_low) {
m1_reverse(pwm_floor - adj_val1);
}
else {
m1_stop();
}
}
else {
m1_stop();
}

if (servo2_Ready) {

// channel 2
adj_val2 = map(servo2_val, low2, high2, 0, 511);
adj_val2 = constrain(adj_val2, 0, 511);

if (adj_val2 > 511) {
adj_val2 = 511;
}
else if (adj_val2 < 0) {
adj_val2 = 0;
}
else {
}

if (adj_val2 > deadband_high) {
m2_forward(adj_val2 - pwm_ceiling);
}
else if (adj_val2 < deadband_low) {
m2_reverse(pwm_floor - adj_val2);
}
else {
m2_stop();
}

}
else {
m2_stop();
}

Serial.print("M1 Amps = ");
Serial.print(current_sense_1);
Serial.print(" ");

Serial.print("M2 Amps = ");
Serial.print(current_sense_2);
Serial.print(" ");


Serial.print("channel 1: ");
Serial.print(adj_val1);
Serial.print(" ");

Serial.print("channel 2: ");
Serial.print(adj_val2);
Serial.print(" ");

Serial.print("Switch Value: ");
Serial.print(servo3_val);
Serial.println(" ");

}
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22896
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 8. 2013, 9:09

jsem pochopilze to tedy to krmis primo z CPU prez budic
sw jsem nepitval
mas osetrene hazardni stavy treba na vystupnich pinech cpu napr pri resetu?
ma to cpu vyrobcem garantovane jejich osetreni?
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

5. 8. 2013, 10:09

je to napojeno na arduino přez rezistory 0,5K arduino má v sobě atmega 328 jak moc má samo osobě ošetřené tyto stavy nevím , jinak aby nedošlo k souběžnému otevření fetů proti sobě si hlídá budič , ten to nedovolí .
každopádně je na netu kupa podobných schemat a funguje to , regulátor jako takový se chová dobře , jen mi jde oto jak moc mít předimenzované fety a to jak napětově tak proudově , a jak moc velkou kapacitu
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22896
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

5. 8. 2013, 2:59

tak ti teda muzou sfouknout treba protoze nemas ten budic dimenzovany na tolik kapacity v gate (tolik fetu paralelne)
spina to pak pomeleji coz muze zpusobit to ze se ti potkaj sepnuty tranzistory vertikalne a nebo proste jen kvuli ty kapacite spinas tak pomalu ze ti to nevydrzi teplotne

jen tak hadam nejsem na to zadny expert, jen jsem si s tim parkrat hral a tohle pak hraje docela vyznamnou roli
z praxe vim ze nejde jen tak vymenit fet za jinej
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

5. 8. 2013, 4:05

Budič má 2,5A což je určitě dost. Tranzistor zvládne spínat slušně i pár hradel cmos takže na těch pár tranzistorů by to nemělo dělat paseku (co se týká kapacity G).
Základem je vždy měření - osciloskop a měřit průběh na tranzistoru/tranzistorech.

Jinak externí diody pro ochranu tranzistoru se dávají proto že vnitřní není nikdy tak "dobrá" a hlavně energie kterou pohlcuje zbytečně ohřívá čip tranzistoru.
Problém může být i u návrhu DPS ten je u takového spojování tranzistorů stěžejní. Pokud je třeba cesta k vývodu součástky jen mírně nesymetrická proud si najde cestu z nejnižším odporem a odnese to jeden tranzistor.

Dále musí být tranzistory dobře tepelně svázané, protože nikdy nejsou stejné a jeden toho táhne víc takže se přehřeje a zvyšuje svůj odpor a teoreticky to přebírají ostatní.
Bohužel to funguje i naopak - tranzistor nejstudenější může přenést plný výkon sám a pak může mít na čipu krátkodobě stovky watů ztrátový výkon. To již nemusí vydržet.
Takže pro tranzistor je kritické když je studený nikoliv teplý :D
Často se tranzistory párují alespoň v jednom bodě teplotní křivky - ovšem moc lidí to nedělá. Při takovém počtu se vždy může něco rozejít.
Platí čím méně tranzistorů tím lépe.

A z pohledu složitosti je někdy snažší měnit směr relátkem (přepólovat motor = dvě relé) a používat jen jednoduchý jeden spínaný prvek pro regulaci.
Samozřejmě záleží na konkrétní aplikaci.
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

5. 8. 2013, 6:34

tranzistory jsou na chladiči a propojeny 2,5 kabelem , výstupy brány vždy z prostředního znich .
ten reverz reléém by asi nešel realizovat , protože když je segway na místě tak stále balancuje , to znamená že stále reverzuje .
každopádně odešly dva ze tří tranzistorů v jedné větvi , a to zřejmě když jsem to rozjel na max otáčky a pak prudčeji zabrzdil , tedy na místě kola byla ve vzduchu ,
ten regulátor má deadband takže se dva stavy sejít nemohly , ale otázka je co vygeneroval motor když se dotáčel a mezitím už se do něho pral proud pro opačný směr ,


Ted mě napadlo , možná kdyby byl v normálním provozu a ne ve vzduchu tak by mi tohle nedovolil protože když bych chtěl prudce změnit směr tak by nejdřív dobrzdil a až pak by mi dovolil naklopit se vzad a tím mu dát povel aby se kola točily na druhou stranu
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

5. 8. 2013, 6:55

S tím relé sory je to blbost, nedošlo mě co to pohání :D

Zapojení více fetů pouze takto. Jakékoliv jiné věci jsou na průšvih
P1660692.jpg
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
Uživatelský avatar
packa
Příspěvky: 7037
Registrován: 7. 2. 2007, 6:42
Bydliště: Královehradecký kraj

5. 8. 2013, 7:05

jo ty fety mám přesně takhle pospojené
rollfree
Příspěvky: 484
Registrován: 3. 12. 2008, 1:23
Bydliště: Brno

5. 8. 2013, 10:32

Cjuz píše:Dále musí být tranzistory dobře tepelně svázané, protože nikdy nejsou stejné a jeden toho táhne víc takže se přehřeje a zvyšuje svůj odpor a teoreticky to přebírají ostatní.
Ale to je prece na FETech to krasne, ze maji tuto vlastnost. Proto se daji tak dobre radit paralelne, vpodstate neomezene.
Pokud pres nektery z nich tece vetsi proud, tak se ohreje, stoupne jeho odpor v sepnutem stavu a proud poklesne (preberou to ty ostatni). Je to nadherna zaporna zpetna vazba, kterou nam tady nadelila matka priroda.
Takze s tepelnou vazbou bych si tezkou hlavu nedelal (predpokladam samozrejme stejne tranzisotry).
Soustruh Noell E0177 (Sandra), jenom kličky
Frézka 3040z (Fiona), LinuxCNC
Uživatelský avatar
Cjuz
Příspěvky: 2433
Registrován: 17. 2. 2013, 6:27
Bydliště: Předklášteří
Kontaktovat uživatele:

5. 8. 2013, 10:55

rollfree píše:
Cjuz píše:Dále musí být tranzistory dobře tepelně svázané, protože nikdy nejsou stejné a jeden toho táhne víc takže se přehřeje a zvyšuje svůj odpor a teoreticky to přebírají ostatní.
Ale to je prece na FETech to krasne, ze maji tuto vlastnost. Proto se daji tak dobre radit paralelne, vpodstate neomezene.
Pokud pres nektery z nich tece vetsi proud, tak se ohreje, stoupne jeho odpor v sepnutem stavu a proud poklesne (preberou to ty ostatni). Je to nadherna zaporna zpetna vazba, kterou nam tady nadelila matka priroda.
Takze s tepelnou vazbou bych si tezkou hlavu nedelal (predpokladam samozrejme stejne tranzisotry).
Zní to sice hezky, ale není to zase taková sranda. Funguje to i naopak - při více tranzistorech může jedním nejchladnějším téct několikanásobek jm. proudu. Bohužel tepelná odezva je pomalejší než schopnost tranzistoru to ustát.
Z tohoto důvodu pokud můžu používám ideálně jeden (stejně je složený na čipu z desetitisíců dalších :) )

Jinak při návrhu radši použiji tranzistor co to snese proudově byť nemá takovou velkou výkonovou ztrátu a těch mohu s klidem dát několik paralelně.
Příklad proud je 50A - použiji tranzistor na 55A - sám by se upekl ale když jich bude víc je to OK - a nehrozí zničení když budou krátkodobě tepelně rozvážené. Když nadšeně použiji pět kousků a každý umí jen 15A, nestačím se často divit.
Na konci poznávacího procesu je omyl zcela vyvrácen a my nevíme nic. Zato to víme správně.
Bendzo
Příspěvky: 61
Registrován: 30. 1. 2010, 5:10
Bydliště: Bratislava

6. 8. 2013, 4:05

zdravim,
dost sa tu miesaju pojmy "tranzistor (BJT - Bipolar Junction Transistor )" a "FET", aj ked ich funkcie su podobne, ich spravanie sa dost odlisuje.
Cjuz vacsinou spomina veci co sa tykaju BJT ale niekedy do toho primiesa nieco z FETov.
U BJT je problem, ze ked sa zohreju, tak LAHSIE vedu prud!! Co nakoniec vedie k ich destrukcii, preto sa tepelne zvazuju ked su paralelne.
U FETov to je naopak a tym je vlastne zabezpecena prirodzena spatna vazba. Kedze zdrojom tepla su prave tie citlive casti, tak tato "samo ochranna" funkcia je aj dost rychla.

U FETov je ale dost problem spominana kapacita v GATEe a velka indukcna zataz a vobec este motor ktory produkuje back EMF.
Asi by to chcelo nejake TVS diody pridat k tym ochrannym vo FEToch a zmerat priebehy osciloskopom aby bolo jasne ze sa ten FET naozaj vypne ked treba, lebo ta indukcna zataz a EMF moze sposobit oscilacie pri vypinani, alebo to ze sa proste vobec nevypne (ale myslim ze som videl v scheme Snubber)
Odpovědět

Zpět na „Prevazne nevazne“