Arduino -ketju (kysymykset/keskustelu)

Lassivv

Premium-jäsen
Team AMD
Liittynyt
12.02.2017
Viestejä
3 010
Laitetaampa tälläinenkin pystyyn, kun näistä varmaan riittää keskustelua.

Itse ajattelin rakennella "säädettävän "dummy loadin"" Arduinolla. Hieman katselin vaihtoehtoja ja esim tälläinen tuli vastaan, mitä olette mieltä tuosta kytkiksestä vai onko parempia ideoita/vinkkejä tuon tekoon saa toki valmiitakin ehdottaa jos edullisesti löytyy, mutta arduinollakin kohtuu pienellä vaivalla varmaan onnistuu ja saa näyttöön ainakin ne asiat mitä haluaa ja potikka säädön (10turn). Aina monessa ebay linkissä ainakin digitaali naksuttelu hommia ja ite pidän enempi kyllä tuosta potikka käyttösestä. 10turn potikalla olevia ei ainakaan toki löydy ebaysta, itse potikan hinnankin takia.

Arduino Programmable Constant Current Power Resistance Dummy Load How It Works

Mielipiteitä otetaan vastaan ja toki saa parempaankin linkkiä/vinkkejä antaa.

edit: Toki lisätehokaan purku tilanteessa ei haittaisi jossain tilanteissa. Tuossa käytetty näemmä 10kpl 1ohm / 1watt /1% rinnan. Itselläni taisi olla romulaatikossa 0.9ohm 5W vastuksia jonkunmoinen kasa niitä jos laittaisi 10kpl tai 15kpl niin saisi aika kovan kuorman tehtyä. Toki varmaan fetti menisi uusiksi, mutta muuten olisi varmaan kohtuu yksikertainen rakentaa isompi kuorma, tiedä sitten kuinka paljon vaikuttaa pienempien virtojen tarkkuuteen ja säädettävyyteen.
 
Viimeksi muokattu:
@Bontano Solenoidi aktiivitilassa (luisti sisälle vedettynä) solenoidi vie 12 V *0,8 A = 9,6 W.
9V paristoissa on keskimäärin 400 mAh-600 mAh välillä varausta, siis noin 5,4 Wh energiaa. Eli karkeasti pyöristäen kahden pariston täydellinen hyödyntäminen olisi noin 1h käyttöä, mutta jos paristot on kytketty sarjaan, josta lineaarisella regulaattorilla tiputellaan 12 V:iin jännite niin ollaan lähempänä 40 min.

Loppu matikka on suunnittelijasta kiinni, eli kauan solenoidia pidetään kerrallaan aktiivisena. Sellaisessa perinteisessä "kassakaappi" virityksessä, jossa ovi pompsahtaa auki, solenoiden ei varmaan tarvitse olla aktiivitilassa sekuntia (jos niinkään paljon) enempää. (~1s --> 1h = 3600s => 3600 avauskertaa)
Kannattaa huomioida, että 9V paristo ei välttämättä jaksa noin kovia virtoja. Tällöin saatu energiakin voi jäädä heikommaksi.

Dummy loadeista
Itselläkin on ollut mielessä tuollaisen keinokuorman rakentaminen, mutta jäänyt suunnittelun asteelle. Tarkkuus tosiaan riippuu ohjauksesta ja käytetystä fetistä aika pitkälti, koska säätö tapahtuu tuolla lineaarialueella. Arduino + DAC + fetti ja muutamalla releellä suojaukset, tuossa olisi reseptin pääraakaineet.
Tässä on esimerkiksi jo aika järeän kokoinen viritys, mutta piiritoteutus ei ole juurikaan monimutkaisempi, mitä tuossa pienempitehoisessa. Lähinnä isompaa fettiä tilalle, tai pari rinnan kuten videolla.


Melkein sanoisin, että parempi tosiaan isompi kuin liian pieni. :geek: Perusteluina se, että harvemmin tulee testailtua alle 1A kuormia, jotka toisaalta pystyy testailemaan jo ihan passiivikomponenteilla tarvittaessa. Itsellä käyttö olisi ledipowerien ja muuntajien testausta, virta-alue jossain 1A-30A välillä. Kannattaa tosiaan miettiä sitä käyttöaluetta, ellei sitten rakentele ihan rakentamisen ilosta. :lol:
 
Kiitos paljon vastauksestasi!
Sain nyt vihdoin itse testattua tuon toiminnan ja hyvin ainakin vielä nämä 9V paristot jaksavat yhtä lukkoa avata. (Muutama sataa avausta)
Seuraavaksi asennan keypadin, johon oikean salasanan syöttämällä lukko aukeaa. Vinkkejä tämän koodaamiseen? Googlaillut jo muutamia hyviä esimerkkejä.
 
Löysin hyvän templaten mitä lähdin kehittämään. Nyt toimii koko systeemi, lukko aukeaa salasanalla ja ledit ilmoittavat virheistä. :)
 
Tuon JoniS:än pointti on hyvä. Arduinon ide:ssä pystyy muistaakseni lukemaan vain pinnin kerrallaan, jos käyttää noita digitalreadejä.
(Ja vitsihän on siinä, että kuitenkin koko porttirekisteri luetaan, josta kyseisen pinnin tila rajataan maskilla... :lol:)

Tuossa esimerkissä on kerrottu miten onnistuu koko portin lukeminen. Tuota AVR C:tä voi suoraa kirjoitella sellaisenaan Arduino IDE:en ilman kummempia ongelmia, kunhan muistaa että IDE vaatii setup ja loop silmukat kääntyäkseen (vastaa tuota esimerkin void main() + while(1) rakennetta), ja tietty AVR-kontrolleriin perustuvan Arduinon.
Usein lopputuloksenakin on nopeampi ohjelma. :geek:

Tuossa itse pohdin, jos haluaa oikein hifistellä, niin tekee tuolle näppäimistöpainallukselle oman keskeytyksen. Eli ohjelman suoritus keskeytetään tai esim. kontrolleri herätetään horroksesta lukemaan näppäimen painalluksia. Eipä ole esimerkkiä tähän antaa, mutta arduinon dokumentaatiosta löytyy aika hyvin noista keskeytyksistä (interrupts).
 
Liitin keypadin tähän tyyliin (omani on 4x4) ja määritin portit:

const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte rowPins[ROWS] = { 9, 8, 7, 6 };
byte colPins[COLS] = { 5, 4, 3, 2 };


Tuli yksi warning, mutta setup toimii silti joten ilmeisesti warningista ei tarvitse välittää?

C:\Users\User\Desktop\keypadcode\keypadcode.ino:4:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

Password password = Password( "1234" );
 
Arduinon ide:ssä pystyy muistaakseni lukemaan vain pinnin kerrallaan, jos käyttää noita digitalreadejä.
(Ja vitsihän on siinä, että kuitenkin koko porttirekisteri luetaan, josta kyseisen pinnin tila rajataan maskilla... :lol:)

Jep, tosin ei tuo niinkään arduinon IDE:n rajoitus ole vaan sen kontrollerin itsensä.
Koodi:
/* nappula portb pinni 1 */
#define nappi 1

/* lue portti B */
uint8_t port = PINB;

/* Tarkasta nappulan tila */
If(port &(1 << nappi)){
    // Tee jotain
}
(Naputin puhelimella älkää takertuko jos on typo tjsp)

Kannattaa katsella avrfreaks.net sivustoa jos joku ihmetyttää, sieltä löytyy tutoriaalia jos jonkinlaista, otetaan myös aloittelevat puuhastelijat suht hyvin vastaan ja pyritään auttamaan parhaan mukaan.

Tuossa itse pohdin, jos haluaa oikein hifistellä, niin tekee tuolle näppäimistöpainallukselle oman keskeytyksen.

Perus timeriin kannattaa laittaa nopea luku rutiini, saa samalla ilmaisen debouncen niin ei tarvitse delaytä käyttää.

pinchange interruptilla onnistuisi tuo herätys sleepistä varmaan parhaiten, jos ei halua muuttaa kytkentää taikka koodia.
 
Viimeksi muokattu:
Mikä olisi helpoin tyyli lukea serialista tullut tieto 3 eri muuttujaksi.

Tarkoituksena lähettää toiselta Arduinolta mahd lyhyt viesti toiselle arduinolle serialin kautta:

Esimerkki:
Koodi:
Master Arduino

lähettää esim viestin: 4,8,12

Koodi:
Slave Arduino

Pitäisi mahd yksinkertaisesti saada tulkitsemaan viesti niin että kirjoittaa nuo saapuneet muuttujat esim
byte Mode
byte Color
byte Brighness

Eli koodi siirtäisi luvun 4 Mode muuttujan arvoksi, luvun 8 Color muuttujan arvoksi ja niin eteepäin. Mitenkähän tämä olisi järkevintä tehdä ja millä käskyllä tuo kannattaisi lähettää Masterin puolelta?

Pääasiana saada vaan mahd yksinkertainen "tietoliikenne" ratkaisu näiden välille kun mitään muuta ei koskaan lähetetä kun nämä 3 erillistä numeraali arvoa. (Numeraali arvot voi hyvin olla byte muuttujia 0-255 riittää mainiosti yhden kentän skaalaksi.)

Toivottavasti löytyisi apua tähän asiaan.

edit1: Tein sitten tämän mukaan pienillä muutteluilla eli kaikki 3 osaa mitä tuossa lähetettiin muutin kaikki byteiksi, jotain ylimääräistäkin sinne ehkä jäi, mutta toimi ainakin loistavasti vielä jos saa masterin lähettämään oikeessa muodossa serialin niin kaikki ok :)

Koodi:
// Example 5 - Receive with start- and end-markers combined with parsing

const byte numChars = 32;
char receivedChars[numChars];
char tempChars[numChars];        // temporary array for use when parsing

      // variables to hold the parsed data
char messageFromPC[numChars] = {0};
int integerFromPC = 0;
float floatFromPC = 0.0;

boolean newData = false;

//============

void setup() {
    Serial.begin(9600);
    Serial.println("This demo expects 3 pieces of data - text, an integer and a floating point value");
    Serial.println("Enter data in this style <HelloWorld, 12, 24.7>  ");
    Serial.println();
}

//============

void loop() {
    recvWithStartEndMarkers();
    if (newData == true) {
        strcpy(tempChars, receivedChars);
            // this temporary copy is necessary to protect the original data
            //   because strtok() used in parseData() replaces the commas with \0
        parseData();
        showParsedData();
        newData = false;
    }
}

//============

void recvWithStartEndMarkers() {
    static boolean recvInProgress = false;
    static byte ndx = 0;
    char startMarker = '<';
    char endMarker = '>';
    char rc;

    while (Serial.available() > 0 && newData == false) {
        rc = Serial.read();

        if (recvInProgress == true) {
            if (rc != endMarker) {
                receivedChars[ndx] = rc;
                ndx++;
                if (ndx >= numChars) {
                    ndx = numChars - 1;
                }
            }
            else {
                receivedChars[ndx] = '\0'; // terminate the string
                recvInProgress = false;
                ndx = 0;
                newData = true;
            }
        }

        else if (rc == startMarker) {
            recvInProgress = true;
        }
    }
}

//============

void parseData() {      // split the data into its parts

    char * strtokIndx; // this is used by strtok() as an index

    strtokIndx = strtok(tempChars,",");      // get the first part - the string
    strcpy(messageFromPC, strtokIndx); // copy it to messageFromPC
 
    strtokIndx = strtok(NULL, ","); // this continues where the previous call left off
    integerFromPC = atoi(strtokIndx);     // convert this part to an integer

    strtokIndx = strtok(NULL, ",");
    floatFromPC = atof(strtokIndx);     // convert this part to a float

}

//============

void showParsedData() {
    Serial.print("Message ");
    Serial.println(messageFromPC);
    Serial.print("Integer ");
    Serial.println(integerFromPC);
    Serial.print("Float ");
    Serial.println(floatFromPC);
}
 
Viimeksi muokattu:
Yleensä tuo sarjaliikenteen luku toteutetaan keskeytyspalvelussa(ISR), missä data luetaan bufferiin, mistä se sitten parsitaan kokoon, kun on suoritinaikaa.(arduino kait(?) tekee tuon lukemisen tuolla tapaa "behind the scenes").

Nopealla vilkaisulla(puhelimella) tuossa koodissa ei kait hirveästi testata tuliko sieltä edes odotettua dataa toisesta päästä perille asti, vaan suoraan vaan käytetään strok() funktiota merkkijonon pilkkomiseen, kannattaa opetella alusta pitäen varmistamaan se data mitä sieltä tuli perille, säästyy aikaa pitkällä tähtäimellä huomattavasti.
Koodi:
/* yksinkertaisimmin, ilman mitään turhaa(puuttuu myös error checking)*/
Mode = Receivedchars[0];
Color = Receivedchars[2];
Brightness = Receivedchars[4];
 
Ostin tuossa taannoin kourallisen himskatin pieniä arduino roippeita (Teensy, CAN transmitter, DC motor controller ja GPS breakout) tarkoituksena yhdistää ne toisiinsa. Puuttuu vaan taito käytännössä kokonaan softan puolesta. Onko mitään aloittelijan ohjetta tahi tarinaa mitenkä tarjolla webissä? Ajatus on saada ehjättyä auton wanha analogi mittaristo käyttämällä megasquirt ohjainlaitteen tuottamaa can signaalia josta luettaisi vain moottorin lämpötilaa joka käännettäisiin pwm ohjaukseen teensyssä ja sitäkautta mittarin lämpötilaviisari liikkuisi. Lisäksi gps moduulin emeasta luettaisiin vain nopeustietoa joka taas käännettäisiin dc moottorin pyörintä nopeudeksi. DC moottori korvaa siis nopeusmittarin vaijerin. Perimmäinen ajatushan on että en silvo yhtään mittaristoa. Johtoja saa aina uusia.

Softat on ladattu ja asennettu sekä yhteys pelaa teensyyn. On myös käännetty ja lähetetty blinker sketsi. Latasin myös flex can, tiny GPS ja adafruitin gps kirjastot. Niiden esimerkki sketsit vaativat jo modaamista toimiakseen tuossa.

Vai onko mun syytä avata oma ketju ? :D Kyllä, kurottaudun liian korkeelle puuhun.
 
Ostin tuossa taannoin kourallisen himskatin pieniä arduino roippeita (Teensy

Mikä teensy?

Kyllä, kurottaudun liian korkeelle puuhun.

Et välttämättä, jostain se on aloitettava ja jos on selvä kuva mitä tehdä niin yleensä siinä on aika hyvä lähtökohta, kunhan ei heti luovuta. samalla tavalla itse aikanaan aloitin androidille softaa tekemään, Javasta mitään ymmärtämättä, C kielestä toki osasin alkeet jo siinä vaiheessa.

Softat on ladattu ja asennettu sekä yhteys pelaa teensyyn. On myös käännetty ja lähetetty blinker sketsi. Latasin myös flex can, tiny GPS ja adafruitin gps kirjastot. Niiden esimerkki sketsit vaativat jo modaamista toimiakseen tuossa.

Kannattaa jakaa projekti pikku palasiin, ainakin selvät erilliset asiat mitä käy ilmi olisivat seuraavat.
  • PWM
  • CAN
  • GPS
vasta sitten kun "palanen" on toimiva ja testattu, mutta myös ymmärrät mitä se koodi tekee ja minkä takia se tekee niin, siirryt seuraavaan "palaseen" minkä teet yksittäin taas samalla tapaa, lopuksi jäljelle jää se kun yhdistät nuo valmiit koodin palaset kokonaisuudeksi.
Jos lähdet kaikkea kerralla laittamaan kasaan niin tulee turhia turhautumisia, jos ja kun se ei toimi, eikä ole mitään käryä missä se vika on.
 
Teensy 3.2. Siinäkun on sisäänrakennettu can tulkkaus. Jos oikein oon ymmärtänyt. Niin ajattelinkin että alussa lähtisin nimeomaan tuosta lämpötila -> pwm ohjauksesta ja sen jälkeen nopeus. Tälle ajokaudelle tämän toimimaan saaminen olisi äärettömän hieno saavutus. Mutta ainahan on uusi kevät tuloillaan ja välissä talvikin.
 
Löysinpä interwebsistä avoimen koodin teensylle missä on gps toteutettu samalla moduulilla kuin mulla sekä askelmoottorin ohjaus samalla tsipillä kun mulla. Miinuksena tietty koodissa on turhaa myös paljon. Ehkä kantsii koittaa copypastea tarvitttavat toisaalle ja lähtee siitä testailee ? Sensijaan että vaan modais tuota.
 
Löysinpä interwebsistä avoimen koodin teensylle missä on gps toteutettu samalla moduulilla kuin mulla sekä askelmoottorin ohjaus samalla tsipillä kun mulla. Miinuksena tietty koodissa on turhaa myös paljon. Ehkä kantsii koittaa copypastea tarvitttavat toisaalle ja lähtee siitä testailee ? Sensijaan että vaan modais tuota.

Onko se tämä sama koodi mikä näkyy kristallipallossa?
 
Tosiaan kannattaa aluksi varmaan sellaisenaan testata noita kirjastoja, kun voisi olettaa että ne toimii niin tietää melkein ettei kytkentä ole oikein jos ei ala mitään tapahtumaan.

Paljon mukavampi alkaa sitten koodia modaamaan, kun tietää että kytky on oikein ainakin niin ei turhaan montaa tuntia koodia väännä ja korjaile, kun vika olisikin kytkyssä loppupelissä.
 
Gps saatu toimimaan tinygps++ kirjaston kitchen sink esimerkillä kunhan mutti baudimäärän ja oikeet pinnit käyttöön. Silloin lähti tulee dataa jossa nopeuskin oli eroteltuna suoraan. Sensijaan CAN tuottaa suuria ongelmia ja tukkukaupalla harmaita hiuksia. En nimittäin saa näkyviin mitään tervehdystekstin jälkeen. Paneuduttava siis lisää ja lisää ja lisää.
 
Osaisikohan joku auttaa Nrf24L01 moduuleihin ja arduinoon liittyvässä kysymyksessä. Yleisin ongelma näiden kanssa toimiessa on että tarvitsevat 3.3volttia käyttöjännitteeksi. Arduino nano ja uno mitä tulisi käyttöön on taas 5voltin käyttö jännitteellä. Näistä löytyy myös 3.3voltin ulostulo, mutta tämä on vissiinkin Serial piirin tarjoama 3.3voltin ulostulo mikä maksimi virta on noin 50mA.

Erinäisistä lähteistä netistä löytyy että moduuli voi ottaa pahimmillaan 200-300mA piikeissä virtaa. Yleisesti toki vähemmän, mutta tuo 50mA on selkeästi liian vähän monessa tilanteessa. Mietin että olisi hyväksyttävää tiputtaa reguloidusta 5voltin jännitteestä (arduino nanon käyttöjännite) 4kpl diodeita jännite 3voltin pintaan ja tasata vielä sitä vaikka 0.1uf ja 10uf konkilla.

Vai onko tuo jotenkin hurjasti huonompi vaihtoehto kun hankkia jostain 3.3voltin regulaattoreita?
 
Täällä oli keskustelua dummy loadista; EI niitä kytkinfettejä lineaarikäyttöön, EI.
 
Osaisikohan joku auttaa Nrf24L01 moduuleihin ja arduinoon liittyvässä kysymyksessä. Yleisin ongelma näiden kanssa toimiessa on että tarvitsevat 3.3volttia käyttöjännitteeksi. Arduino nano ja uno mitä tulisi käyttöön on taas 5voltin käyttö jännitteellä. Näistä löytyy myös 3.3voltin ulostulo, mutta tämä on vissiinkin Serial piirin tarjoama 3.3voltin ulostulo mikä maksimi virta on noin 50mA.

Erinäisistä lähteistä netistä löytyy että moduuli voi ottaa pahimmillaan 200-300mA piikeissä virtaa. Yleisesti toki vähemmän, mutta tuo 50mA on selkeästi liian vähän monessa tilanteessa. Mietin että olisi hyväksyttävää tiputtaa reguloidusta 5voltin jännitteestä (arduino nanon käyttöjännite) 4kpl diodeita jännite 3voltin pintaan ja tasata vielä sitä vaikka 0.1uf ja 10uf konkilla.

Vai onko tuo jotenkin hurjasti huonompi vaihtoehto kun hankkia jostain 3.3voltin regulaattoreita?

NOTE: These units VCC connection must go to 3.3V not 5.0V, although the Arduino itself may run at 5.0V and the signals will be OK. The NRF24L01+ IC is a 3.3V device, but its I/O pins are 5 V tolerant.
https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

Eli syötät vaan sille Nrf24L01 sen 3,3v, vaikka niillä diodeilla.

Sitten on valmiiksi 3,3V minejä ja muuntimia 3,3V ja 5V välille--> 1Pc 4 Channel IIC I2C Level Converter Bi-Directional Module Modul 5V-3.3V

edit: Tässä tapauksessa turhan yliviivaus
 
Viimeksi muokattu:
Tiedossa olikin ettei väliin tarvitse mitään eli tuo i/o pin toleranssi oli tiedossa. Lähinnä tuo että saadaanko diodeilla tarpeeks kelvollista/tasaista jännitettä annettua noille lutikoille kuorman vaihteluista huolimatta. Vai onko regulaattori ainao järkevä vaihtoehto.
 
Lähinnä tuo että saadaanko diodeilla tarpeeks kelvollista/tasaista jännitettä annettua noille lutikoille kuorman vaihteluista huolimatta. Vai onko regulaattori ainao järkevä vaihtoehto.

Kyllähän noilla diodeilla testailee tuota, mutta regulaattorin hommaisin joka tapauksessa, osta samalla muutama ylimääräinen kun noille on aina tarvetta.

Itsekkin joskus tehnyt vain jännitejaon vastuksilla sarjaliikenteen varten, kun toinen laite ei ole kestänyt sitä 5v, kyllä sillä testaili sitä, mutta en sitä niin jättäisi mihinkään pitkäaikaiseen juttuun.
 
Vai onko regulaattori ainao järkevä vaihtoehto.

Kannattaa hommata siihen koekytkentälevylle tälläinen --> 1PCS MB102 Breadboard Power Supply Module 3.3V 5V For Solderless Arduino | eBay

Saa ulos 3,3V ja 5V yhtäaikaa. Tuo vielä parempi malli siitä alkuperäisestä, että saa virrat miniusb:stä ja automaattisulakkeella varustettu sekä vie vähemmän tilaa koekytkentälevyltä.

Sitten etenkin nuo pintaliitos regut on törkeän halpoja ja kestävät virtaa ihan kivasti --> 50PCS AMS1117 AMS1117-3.3 AMS117-3.3 3.3V 1A Voltage Regulator SOT-223 NEW | eBay
 
Tollasia sattui löytymään kaverilta taidampa noita käyttää. Luulisi tuon 0.5A riittävän, jos joten kuten tolla 50mA toimivat ja 200mA puhuu speksi sivut maksimi virtana.

TC1262-3.3VDBTR

Tuo kytkislevylle oleva power supply module on kyll kova, kiitokset vinkistä pitää pistää tulemaan. Juuri mittailin niin 130mV on ripple jännite tuossa laitteella kun tuo 2.4ghz moduuli ja arduino nano on kuormana. Syötän suoraan 5voltin kännykän laturilla tuota ja 5voltin ja 3.3voltin linjojen rinnalla on 330uf/6.3v elko ja 0.1Uf muovikonkka. Mahtaakohan tuo ripple jännite olla ok vai pitäisikö tuonne luotettavuuden puolesta tehdä vielä jotain muuta virransyötön osalta?
 
Tollasia sattui löytymään kaverilta taidampa noita käyttää. Luulisi tuon 0.5A riittävän, jos joten kuten tolla 50mA toimivat ja 200mA puhuu speksi sivut maksimi virtana.

TC1262-3.3VDBTR

Tuo kytkislevylle oleva power supply module on kyll kova, kiitokset vinkistä pitää pistää tulemaan. Juuri mittailin niin 130mV on ripple jännite tuossa laitteella kun tuo 2.4ghz moduuli ja arduino nano on kuormana. Syötän suoraan 5voltin kännykän laturilla tuota ja 5voltin ja 3.3voltin linjojen rinnalla on 330uf/6.3v elko ja 0.1Uf muovikonkka. Mahtaakohan tuo ripple jännite olla ok vai pitäisikö tuonne luotettavuuden puolesta tehdä vielä jotain muuta virransyötön osalta?

Esp8266 vaikuttaa samanlaiselta virtasyöpöltä ja on epävakaa ilman sopivia konkkia eli 1000uF elko ja kerko "104" 0,1uF plussan ja maan välille. Itse asiassa mulla on sääasemassa vain elko 470uF ja tuo kerko "104".


Sveitsiläinen tapaus oli laittanut tonnisen tantaalin.
 
Kiitoksia vinkistä. Tänään löysin edellisen tilauksena jäminä Panasonicin 1000uf 10v konkkia ja pussin 334 kerkoja. Ei nyt osu juuri noihin spekseihin, mutta nuo plus tuo edellä mainittu TC1262 regu saa nyt hoitaa virransyöttä katotaan miten pärjäävät :)
 
Saakohan tampereelta jostain haettua dht22 järkihintaan?
Bebekin haku ei ainakaan anna mitään, prkl luulin että tilasin sen muun romun mukana mutta luulo ei ollut tiedon väärti eikä tässä vaiheessa nappais odotella paria viikkoa kiinasta.
 
Saakohan tampereelta jostain haettua dht22 järkihintaan?
Bebekin haku ei ainakaan anna mitään, prkl luulin että tilasin sen muun romun mukana mutta luulo ei ollut tiedon väärti eikä tässä vaiheessa nappais odotella paria viikkoa kiinasta.
Hämeenlinnassa näyttäs olevan robomaa joka myyp DHT11 anturia.
 
Osaisikohan joku auttaa Nrf24L01 moduuleihin ja arduinoon liittyvässä kysymyksessä. Yleisin ongelma näiden kanssa toimiessa on että tarvitsevat 3.3volttia käyttöjännitteeksi. Arduino nano ja uno mitä tulisi käyttöön on taas 5voltin käyttö jännitteellä. Näistä löytyy myös 3.3voltin ulostulo, mutta tämä on vissiinkin Serial piirin tarjoama 3.3voltin ulostulo mikä maksimi virta on noin 50mA.

Erinäisistä lähteistä netistä löytyy että moduuli voi ottaa pahimmillaan 200-300mA piikeissä virtaa. Yleisesti toki vähemmän, mutta tuo 50mA on selkeästi liian vähän monessa tilanteessa. Mietin että olisi hyväksyttävää tiputtaa reguloidusta 5voltin jännitteestä (arduino nanon käyttöjännite) 4kpl diodeita jännite 3voltin pintaan ja tasata vielä sitä vaikka 0.1uf ja 10uf konkilla.

Vai onko tuo jotenkin hurjasti huonompi vaihtoehto kun hankkia jostain 3.3voltin regulaattoreita?

Tilasin itse tuollaisia noitten kanssa:

Socket Adapter plate Board for 8Pin NRF24L01+ Wireless Transceive module CHCA | eBay
 
Lassi, millä nokian paskalaturilla moista syötät? Ei siellä pitäisi moista rippeliä olla, jos laturi ei ole ihan karmeinta kuraa...

334 ei kerro mitään muuta, kuin kapasitanssin nollassa voltissa. Paskakerkoissa ei ole kapasitanssia juuri lainkaan jännitekeston rajamailla.
 
Osaisikohan joku auttaa Nrf24L01 moduuleihin ja arduinoon liittyvässä kysymyksessä. Yleisin ongelma näiden kanssa toimiessa on että tarvitsevat 3.3volttia käyttöjännitteeksi. Arduino nano ja uno mitä tulisi käyttöön on taas 5voltin käyttö jännitteellä. Näistä löytyy myös 3.3voltin ulostulo, mutta tämä on vissiinkin Serial piirin tarjoama 3.3voltin ulostulo mikä maksimi virta on noin 50mA.

Erinäisistä lähteistä netistä löytyy että moduuli voi ottaa pahimmillaan 200-300mA piikeissä virtaa. Yleisesti toki vähemmän, mutta tuo 50mA on selkeästi liian vähän monessa tilanteessa. Mietin että olisi hyväksyttävää tiputtaa reguloidusta 5voltin jännitteestä (arduino nanon käyttöjännite) 4kpl diodeita jännite 3voltin pintaan ja tasata vielä sitä vaikka 0.1uf ja 10uf konkilla.

Vai onko tuo jotenkin hurjasti huonompi vaihtoehto kun hankkia jostain 3.3voltin regulaattoreita?

Pelkkä nrf24 ottaa itsessään 20-50mA välillä. Onko sulla sellainen nrf24-moduuli, jossa on lisävahvistin? (yleensä nimellä PA+LNA -moduuli, ulkoinen antenni)
Ne saattaa nimittäin ottaa piikkejä ihan tosissaan. Niille kannattaa melkein laittaa regu ja iso konkka moduulin jalkoihin kiinni. Ja jos usbista otat käyttöjännitteet 5V:lle (arduino tai vastaava), niin se saattaa olla kans ongelma. Ite oon usein noiden PA-moduulien kanssa pistänyt ulkoisen powerin, niin yleensä on lähtenyt toimimaan huomattavasti kivuttomammin. Monissa kiina-arduinoissa on 1A 3.3V regu, jonka pitäis riittää.
 
Mahtaisiko jollain olla hyvää vinkkiä millä saisi tälläisen yksinkertaisen toiminnon toteutumaan. Tällä hetkellä jostan syystä slave laite ottaa kerran tuon käskyn vastaan ja sitten nollaantuu. Joskus toimii ok.

master code (määrittää slavelle yksinkertaisesti numero arvot modeNumber, brighNumber, colorNumber ja lähettää ne slavelle)
Koodi:
 String stringMessage = "";
 String stringStart = "<";
 String stringComma = ",";
 String stringStop = ">";

// Lähetetään data Arduino Due:lle Slave

void serial_write_master() {

if(xlastModeNumber == modeNumber && xlastBrighNumber == brighNumber && xlastColorNumber == colorNumber){previousMillis = currentMillis;}

else
{
    if(currentMillis - previousMillis >= interval)        // tehty siihen ettei aja serialin puskuria jumiin vaan saa nopeemmin kirkkauden muuttumaan potikkaan.
    {
      
          
          
            stringMessage =  String(stringStart +  modeNumber + stringComma + colorNumber + stringComma +  brighNumber + stringStop);
          
            Serial3.print(stringMessage);
            Serial.println(stringMessage); // debugging
          
            xlastModeNumber = modeNumber;
            xlastBrighNumber = brighNumber;
            xlastColorNumber = colorNumber;
    }

}
//Serial.println(currentMillis - previousMillis);

}

Slaven koodi Ottaa vastaan numerot ja sitten vaan käyttää niitä hallitsemaan ledejä.
Koodi:
const byte numChars = 32;
char receivedChars[numChars];
char tempChars[numChars];        // temporary array for use when parsing


boolean newData = false;

void serial_read_parse() { // Luetaan tieto muodossa <2,12,222> (eka mode, sitten väri ja lopuksi kirkkaus)
recvWithStartEndMarkers();
  if (newData == true) {
     strcpy(tempChars, receivedChars);
     // this temporary copy is necessary to protect the original data
     //   because strtok() used in parseData() replaces the commas with \0
     parseData();
     showParsedData();
     newData = false;
  }
}

void recvWithStartEndMarkers() {
    static boolean recvInProgress = false;
    static byte ndx = 0;
    char startMarker = '<';
    char endMarker = '>';
    char rc;

    while (Serial3.available() > 0 && newData == false) {
        rc = Serial3.read();

        if (recvInProgress == true) {
            if (rc != endMarker) {
                receivedChars[ndx] = rc;
                ndx++;

            }
            else {
                receivedChars[ndx] = '\0'; // terminate the string
                recvInProgress = false;
                ndx = 0;
                newData = true;
            }
        }

        else if (rc == startMarker) {
            recvInProgress = true;
        }
    }
}

//============

void parseData() {      // split the data into its parts

    char * strtokIndx; // this is used by strtok() as an index

    strtokIndx = strtok(tempChars, ",");     // get the first part - the string
    ModeFromMaster = atoi(strtokIndx);     // convert this part to an integer

    strtokIndx = strtok(NULL, ","); // this continues where the previous call left off
    ColorFromMaster = atoi(strtokIndx);     // convert this part to an integer

    strtokIndx = strtok(NULL, ",");
    BrighnessFromMaster = atof(strtokIndx);     // convert this part to a float

}

//============


void showParsedData() {
    Serial.print("Message ");
    Serial.println(ModeFromMaster);
    Serial.print("Integer ");
    Serial.println(ColorFromMaster);
    Serial.print("Float ");
    Serial.println(BrighnessFromMaster);
}


Joku mahd yksinkertainen koodi pitäisi hommaan keksiä kun ei tosiaan tarvitse lähettää kun 3erillistä numeroa tai voihan ne toki olla yksi pitempi numero mikä pätkitään sopivasti. Vinkit otetaan vastaan, virheen tarkituksia yms ei tarvitse ei ole niin kriittinen, pääasia että koodi jäisi mahd yksinkertaiseksi.

EDIT: Koodi toimi ok mielestäni lyhyemmällä johdolla, pitemmällä suojatulla johdolla tuli tämä esille että kun lähettää masterilta tuon koodin slave ottaa sen oikein vastaan, mutta ns unohtaa/nollaantuu x hetken kuluttua. Välillä taas nykyiselläkin piuhalla laite toimii juuri oikein eli vastaanottaa masterilta käskyn ja jää toteuttamaan sitä ikuisesti kunnes tulee uusi.
 
Viimeksi muokattu:
Eikös tuossa datasheetissä ole jonkun kaltainen kytky? Se kytketään ADC tuloon sinne arduinoon(oisko ne ollut niitä analog in vai mikälie) ja luetaan jännitettä mistä sadaan laskukaavalla, mikä on myös datasheetissä, se oikea arvo.
 
Datalehdessä on tosiaan kytkentä. Härveli näyttää vaativan myös NTC:n ja jotain jännitettä myös 1-10V.
 
Datalehdessä on tosiaan kytkentä. Härveli näyttää vaativan myös NTC:n ja jotain jännitettä myös 1-10V.

NTC on laitettu tuohon referenssipiiriin siksi, että samalla mittauksella voidaan lukea kosteus ja lämpötila. Tuossa siis hyödynnetään jännitteenjakoa, eli kun V1 on tunnettu arvo saadaan nuo Rh ja Rt arvot selville, kun mitataan ADC:lla Vo.
Rt voi tietty olla myös kiinteä vastusarvo. Tällöinkin se Rh arvo saadaan tuosta suhteesta. :)

Ainoa ongelma mikä voi tulla mittaustarkkuudessa vastaan on tuon sensorin melkoinen resistanssin vaihtelu. Esim. huoneen lämmössä 9.8 Mohmista pariin kilo-ohmiin. Tämä kannattaa ottaa huomioon, ettei riko ADC:ta, kun Arduinon (AVR) ADC tykkää kyttyrää yli 5,5 V jännitteistä.
 
Onko täällä joku saanut ciao kirjaston toimimaan onnistuneesti?
Mulla arduino jäätyy heti kun ciao.begin() tapahtuu...

Koodi:
#include <Ciao.h>

void setup() {
    //init Ciao and LCD
    Ciao.begin();
    Serial.begin(9600);
}

void loop() {
    delay(2000);

    //Read file from lininoOS
    CiaoData data = Ciao.read("file","/root/sample.txt");
    if(!data.isEmpty()){

        //extract data from Ciao
        String message = data.get(2);

        //Print message via serial
        Serial.println(message);
    }
    //Delay the operations because IO is slow
    delay(2000);
}

sample.txt
Koodi:
Ciao Arduino!

/usr/lib/python2.7/ciao/connectors/file/file.json.conf
Koodi:
{
    "name" : "file",
    "description" : "File System connector for Ciao",
    "authors": ["Arduino Team <swdev@arduino.org>"],
    "repository" : "https://github.com/arduino-org/Ciao",
    "version" : "0.0.1",
    "params" : {
        "root" : "/root",
        "eol" : "\n",
        "read_line" : false,
        "read_max_size" : 1024,
        "default_write_access_mode" : "w",
        "name" : "file",
        "enabled" : true,
        "type" : "managed"
    },
    "log" :{
        "level" : "info"
    }
}

arduino-library-ciao/FileRead.ino at master · arduino-org/arduino-library-ciao · GitHub

Ciao on asennettu Arduino OS kautta, alustana TIAN.
 
Viimeksi muokattu:
OT: Kattelin TIAN-alustan hintaa niin jotain 100 dollaria.:btooth: Koulussako noita käytetään?
 
Viimeksi muokattu:
Miten saan PID säädön toimimaan veneen ohjauksessa kun sen takaisinkytkennästä tulee astelukuja kompassilta? Tarkoitan tilannetta kun kompassin lukema hyppää pohjoisen kohdalla nollasta 359 asteeseen ja päinvastoin, kääntymissuunnasta riippuen.

Suunnittelen yksinkertaista autopilottia veneeseen. PID säätö arduinolla ja kompassiksi olisi tarkoitus tilata BNO055.

Edit: Itselleni vastaten laitan linkin vastaukseen jonka löysin. Jos siitä on jollekkin muulle apua...

loop input to a PID controller
 
Viimeksi muokattu:
Tyhmälle neuvoja. projektina on tällänen. http://rr-m.org/blog/wp-content/upl...o_thrustmaster_wheelbase_wiring_1633x1200.jpg

Eli kun avaan tuon tx_rw_ferrari_458_wheel_emu_16buttons.zip tiedoston, niin pitääkö siinä tehdä mitään muuta kuin varmistaa ja lähettää. Kolvaukset on tarkistettu sataan kertaan jo, oikea portti on valittu, korttina valittuna nano, mitään erroreita ei tule.... Mutta ei vain lähde toimimaan. Eli onko nämä ebayn kiinan ihmeet valmiiksi rikki.

Eli tälläseen vehje kyseessä Nano V3.0 Mini USB ATmega328 5V 16M Micro-controller Board CH340G Arduino Cable | eBay
 
Tyhmälle neuvoja. projektina on tällänen. http://rr-m.org/blog/wp-content/upl...o_thrustmaster_wheelbase_wiring_1633x1200.jpg

Eli kun avaan tuon tx_rw_ferrari_458_wheel_emu_16buttons.zip tiedoston, niin pitääkö siinä tehdä mitään muuta kuin varmistaa ja lähettää. Kolvaukset on tarkistettu sataan kertaan jo, oikea portti on valittu, korttina valittuna nano, mitään erroreita ei tule.... Mutta ei vain lähde toimimaan. Eli onko nämä ebayn kiinan ihmeet valmiiksi rikki.

Eli tälläseen vehje kyseessä Nano V3.0 Mini USB ATmega328 5V 16M Micro-controller Board CH340G Arduino Cable | eBay
Kyllä nuo ihmeesti ovat yleensä toimineet... Mikä tuossa pistää silmään on että 5v nanoa pyöritetään 3.3v käyttiksellä, josta tulee mieleen että bod haluaa enempi tai tolla jännitteellä esim 16mhz kello vaan on liikaa.

Lataa siihen nanoon joku ledin vilkutin ja kokeile.

MiTu

Lähetetty minun TA-1053 laitteesta Tapatalkilla
 
Tyhmälle neuvoja. projektina on tällänen. http://rr-m.org/blog/wp-content/upl...o_thrustmaster_wheelbase_wiring_1633x1200.jpg

Eli kun avaan tuon tx_rw_ferrari_458_wheel_emu_16buttons.zip tiedoston, niin pitääkö siinä tehdä mitään muuta kuin varmistaa ja lähettää. Kolvaukset on tarkistettu sataan kertaan jo, oikea portti on valittu, korttina valittuna nano, mitään erroreita ei tule.... Mutta ei vain lähde toimimaan. Eli onko nämä ebayn kiinan ihmeet valmiiksi rikki.

Eli tälläseen vehje kyseessä Nano V3.0 Mini USB ATmega328 5V 16M Micro-controller Board CH340G Arduino Cable | eBay

Onko sinulla ollut USB piuha kytkettynä nanoon samaan aikaan kun tuon mini-DIN liitin on kytketty laitteeseen? Usbin 5 volttia voi polttaa 3,3 voltin laittteen. 8 MHz Arduino mini voisi toimia paremmin tuossa.

Pleikkariinko tuo kytketään?
 
Täällä oli keskustelua dummy loadista; EI niitä kytkinfettejä lineaarikäyttöön, EI.

Mikä sen estää?

Menee vähän ohi ketjun aiheen...

Varsinkin lineaarikäytössä, mutta myös kytkinkäytössä on tärkeää katsoa, että transistori pysyy aina turvallisella käyttöalueella (SOA), oli sitten kyseessä bipolaari tai fetti. Yksi parhaista feteistä linearikäyttöön on kytkinfetti FDL100N50F . Katso datalehdeltä kuva 9 (Maximum Safe Operating Area). Siitä nähdään, että esim. sadan voltin jännitehäviöllä fetin yli ehdoton maksimivirta on 25 A. Mitoittaessa pitää tietysti ottaa myös jäähdytyksen teho huomioon. Eli SOA kaventuu fetin pintalämpötilan (Tc) noustessa. Maksimiarvoilla kyseinen fetti tuottaa 2,5 kilowattia lämpöä!
 
Onko sinulla ollut USB piuha kytkettynä nanoon samaan aikaan kun tuon mini-DIN liitin on kytketty laitteeseen? Usbin 5 volttia voi polttaa 3,3 voltin laittteen. 8 MHz Arduino mini voisi toimia paremmin tuossa.

Pleikkariinko tuo kytketään?
Ei ollut, ja tietokoneeseen kytken.
 

Statistiikka

Viestiketjuista
258 248
Viestejä
4 490 997
Jäsenet
74 171
Uusin jäsen
äänihaitta

Hinta.fi

Back
Ylös Bottom