Spørsmål:
USB og Arduino: Strøm Arduino, lad LiPo og overfør data samtidig
George Troulis
2017-03-02 01:20:45 UTC
view on stackexchange narkive permalink

Jeg håpet å designe mitt eget Arduino-kort for et nylig prosjekt av meg, et bærbart prosjekt som ble drevet av et 3,7 LiPo-batteri. Ideelt sett ønsket jeg å erstatte USB B-porten med en USB-mikroport som implementerer følgende funksjoner:

  1. Gir strøm til Arduino mens den er koblet til (akkurat som en vanlig Arduino gjør
  2. Koble D + og D-pinnene på USB-en til Arduino på en eller annen måte for å tillate programmering om bord (men Arduino oppnår dette allerede, jeg vil referere til dette som "innebygd usb / seriell omformer "). Jeg vil at den skal holde den programmerbar mens du er på farten.
  3. Lader et innebygd 3,7V LiPo-batteri. Jeg håpet å kunne bruke Adafruit's PowerBoost 500 Shield som referanse for skjematisk.

Jeg har imidlertid ikke klart å finne en skjematisk oversikt eller et eksempel som implementerer alle tre funksjonene ovenfor samtidig fra samme USB-port . Jeg har ikke mye erfaring med ladingskretser, så følgende spørsmål kan høres dumme ut. Nedenfor er noen løsninger jeg tenkte på som sannsynligvis ikke vil fungere, men jeg ønsket å være sikker på:

  1. Koble LiPo-batteriets utgangsspenning til V + / GND-forsyningen til USB-kabelen (sannsynligvis ikke trygt å koble alle V + kilder sammen).
  2. Bare koble D +/- datakablene til "innebygd usb / seriell omformer" uten å koble Vbat / Vusb på en eller annen måte, få USB V + / GND til å koble til LiPo-ladekretsen og batterispenningseffekten Arduino.

Jeg vet at noen enheter har denne lading / dataoverføringsfunksjonaliteten (f.eks. at telefonen min kan overføre bilder til datamaskinen mens den slås på og lades samtidig), men jeg Jeg lurer på hvordan det er mulig å ha lignende funksjonalitet for et Arduino-kort. Noen råd?

Absolutt i verste fall, jeg har bare to USB-porter, en for lading av LiPo og en for seriell kommunikasjon / programmering

EDIT: Ideen om å bruke en ATMega32U4 virker tiltalende (til tross for driftsspenningen på 3,3 V vs 5 V), hovedsakelig fordi den har en pin for VBUS for USB og Vcc for hovedstrøm. Men jeg lurte på hvordan jeg skal gjøre dette på si en ATMega328P som ikke har en pin for VBUS.

[Arduino Lilypad USB] (https://www.arduino.cc/en/Main/ArduinoBoardLilyPadUSB) strømmer, lader, data gjennom den samme USB-kontakten. Jeg har nylig laget et avledet arbeid basert på Lilypad USB. Det fungerte bra.
bare koble mikro-USB til en "ftdi", ftdi til MCU, og ftdis strømforsyning gjennom pin (5v) til et litiumladebrett (ca. 50 cent); og bob er onkelen din; alle tre for under $ 2 ...
Tre svar:
seanwatson
2017-03-02 01:55:19 UTC
view on stackexchange narkive permalink

Jeg vil anbefale å bruke Arduino Leonardo som referanse for kretsen din. Det er stort sett det samme som en Arduino UNO, men har et innebygd USB-grensesnitt, slik at du ikke trenger USB-seriell omformer.

Jeg vil også anbefale å kjøre brikken på 3.3V. På den måten kan du bruke en lineær regulator til å regulere 3,7V batterispenningen ned. Ellers trenger du en boost-omformer for å støte spenningen opp til 5V som trenger flere deler.

Hvis du følger disse anbefalingene, er alt du trenger en LiPo-lading-IC for å håndtere ladingen. Du må legge til en ISCP-overskrift for å blinke den opprinnelige oppstartslasteren til Leonardo, men etter det kan du bruke USB og Arduino IDE til å programmere den.

Jeg gjorde akkurat dette for et skoleprosjekt for en stund tilbake. Du finner skjemaene her: https://github.com/seanwatson/ece4416-project/blob/master/hardware/rev2/sw-4416-project-v2-sch.pdf

Hmm, jeg håpet å unngå å bruke en ATMega32U4 fordi jeg ikke har så mye SMD-loddeerfaring. Men det virker som det har en pinne for USB-strøm OG en egen Vcc-strøm? Det ser veldig praktisk ut! Jeg vil prøve dette
Tilstedeværelsen av disse to pinnene * betyr ikke * at de er doble innganger og at brikken vil løpe ut av den som får strøm. de har spesifikke formål.
Personlig vil jeg unngå å bruke en lineær regulator på et batteridrevet system ... Å miste 25% av energien som er lagret bare for å varme opp regulatoren, er ikke veldig effektiv. I alle fall tilfeller jeg 3.3V-forslaget: med en enkel bukkregulator (til og med allerede loddet i moduler som de som selges på ebay til rundt 1 $) får du mer effektivitet enn med en boost-regulator, og en 3,3V uC bruker mindre makt
Beklager nekropostingen. Jeg la ikke merke til at dette var et veldig gammelt innlegg som ble støtet fordi @GeorgeTroulis ikke godtok et svar ...
@frarugi87 det er ok, grunnen til at jeg ikke har akseptert svar ennå, er fordi jeg aldri har prøvd noen av disse løsningene ennå: | Skal jeg fortsatt godta en av disse løsningene? Fordi de alle er så gode! Takk for din tilbakemelding :)
user2497
2017-08-02 01:52:01 UTC
view on stackexchange narkive permalink

Bruk et TP4056 1A LiPo-laderkort (det har overoppladningsbeskyttelse) og en boost-omformer, som XL6009. Det vil kjøre deg maksimalt 5 $ hvis du er forsiktig. Beskyttelse mot overladning er viktig.

Hvis du vil ha en port for programmering, kan du legge til et micro-USB breakout-kort og eventuelt en trykknapp for å bringe RST ned til GND. Jeg foretrekker bare å ha GND, TX, RX-pinner på en 3-pinners topptekst, og koble kabelen til den.

stefandz
2017-03-02 02:24:54 UTC
view on stackexchange narkive permalink

Etter Sean Watsons svar vil jeg sannsynligvis bruke Bare Conductive Touch Board som din referanse. Det er et Leonardo-derivat med alle funksjonene du ber om. Full avsløring - Jeg jobber i Bare Conductive og jobbet med utformingen av tavlen.

Eagle-skjema og tavlefil er her. Siden dette kortet vellykket besto CE og FCC utstrålte utslipp og immunitetstesting, vet du at referanseutformingen er god for dette hvis du vil lage et produkt å selge.

Designet bruker en boost-omformer for å tillate 5V-drift - hvis du kjører Atmega32u4 (eller Atmega328) ved 3.3V, får du ikke garantert riktig drift med en 16 MHz klokke (sjekk databladet ). Siden Arduino bootloader for Leonardo er skrevet for en 16 MHz klokket MCU, sparer dette deg oppgaven med å endre bootloader - og gir deg hele 16 MIPS maksimal ytelse.

Hvordan mener du "på 3. V, får du ikke garantert riktig drift med en 16 MHz klokke"? Ser vi på del 29.3 i Atmel-databladet, er det vanskelig å skille at 3,3 V @ 16 MHz er i det trygge driftsområdet, men siden Arduino Leonardo allerede fungerer på 16 MHz, betyr ikke det at det er "garantert"? Jeg antar at du mener at hvis jeg kjøper min egen 32U4, må jeg endre bootloaderen for å få garantert 16 MIPS-ytelse (med en ekstern 16 MHz oscillator selvfølgelig)?
Leonardo fungerer med en 5V VCC (ta en titt på skjemaene) - så du kan ikke være sikker på at 3.3V-drift er garantert av det. Ser jeg på [dette databladet] (http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf) Jeg kan se at 3.3V helt klart IKKE er i det sikre driftsområdet - det er avsnitt 29.6 her. Det er også en skrivefeil over - kurven er tydelig lineær mellom 2,7V
Oh my bad, jeg så på databladet for [ATMega328P] (http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A- 168PA-328-328P_datasheet_Complete.pdf), som ikke inkluderer 32U4. Også hvor tullete av meg, jeg var under inntrykk av at Leonardo opererte på 3,3 V (hva er galt med meg?). Kanskje å bruke en boost-omformer for 5V-drift, er da det beste alternativet hvis jeg vil ha 16 MHz garantert. Jeg er kanskje villig til å gå 8 MHz, bare for å unngå boost-omformeren. Jeg tror ikke prosjektet mitt vil bli berørt, og det ser ut til å være hva lilypad gjør


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...