Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Jedná se o jednoduchý projekt, který následuje nebo se vyhýbejte světlu.
Tuto simulaci jsem vytvořil v Proteus 8.6 pro. Požadované součásti: -1) Arduino uno.
2) 3 LDR.
3) 2 Dc převodové motory.4) Jedno servo.5) Tři 1k odpory.6) jeden H-Bridge l290D7) Jeden spínač zapnutí a vypnutí [pro změnu podmínek programu]
8) 9v a 5v Battry
Krok 1: Ardunio kód
Arduino Code je upraven a litte -bit Datum 23. února 2016]
Tento kód je vysoce komentovaný Nechci vysvětlovat, ale pokud potřebujete pomoc, kontaktujte mě na ([email protected])
Poznámka: -V tomto programu používám dvě podmínky 1. pro sledování světla. 2. podmínku pro vyhýbání se světlu.
Pokud jsou tyto podmínky splněny, robot bude sledovat světlo nebo se mu bude vyhýbat. [Toto je minimální hodnota LDR, kterou jsem si vybral. V normálním světle je jeho rozsah 80 až 95, ale jak se jeho intenzita zvyšuje, indukuje ho stále více napětí, protože pracuje na principu děliče napětí int a = 400; // Hodnota Tolarance]
Krok 2: Soubory Proteus
Pro Arduino Library stáhněte z tohoto odkazu
Krok 3: Jak funguje váš H-bridge
L293NE/SN754410 je velmi základní H-můstek. Má dva můstky, jeden na levé straně čipu a jeden na pravé straně, a může ovládat 2 motory. Může napájet až 1 ampér proudu a pracovat mezi 4,5 V a 36 V. Malý stejnosměrný motor, který používáte v této laboratoři, může bezpečně běžet na nízké napětí, takže tento H-můstek bude fungovat dobře. H-můstek má následující piny a funkce: Pin 1 (1, 2EN) aktivuje a deaktivuje náš motor, ať už je to HIGH nebo LOWPin 2 (1A) je logický pin pro náš motor (vstup je buď HIGH nebo LOW) Pin 3 (1Y) je pro jednu ze svorek motoru Pin 4-5 jsou pro uzemnění Pin 6 (2Y) je pro druhou svorku motoru Pin 7 (2A) je logický pin pro náš motor (vstup je buď HIGH nebo LOW) Pin 8 (VCC2) je napájecí zdroj pro náš motor, to by mělo být dáno jmenovitým napětím vašeho motoru Pin 9-11 je odpojen, protože v této laboratoři používáte pouze jeden motor Pin 12-13 jsou pro zem Pin 14-15 jsou odpojeny Pin 16 (VCC1) je připojeno k 5V. Výše je schéma H-můstku a které piny v našem příkladu co dělají. Součástí diagramu je pravdivostní tabulka udávající, jak bude motor fungovat podle stavu logických pinů (které nastavuje naše Arduino).
V tomto projektu se aktivační pin připojuje k digitálnímu pinu na vašem Arduinu, takže jej můžete odeslat buď VYSOKÝ nebo NÍZKÝ a zapnout nebo vypnout motor. Logické piny motoru jsou také připojeny k určeným digitálním pinům na vašem Arduinu, takže je můžete odeslat VYSOKÉ a NÍZKÉ, aby se motor otočil v jednom směru, nebo LOW a HIGH, aby se otočil v opačném směru. Napájecí napětí motoru se připojuje ke zdroji napětí pro motor, což je obvykle externí napájecí zdroj. Pokud váš motor může běžet na 5 V a méně než 500 mA, můžete použít 5V výstup Arduina. Většina motorů vyžaduje vyšší napětí a vyšší odběr proudu než tento, takže budete potřebovat externí napájecí zdroj.
Připojte motor k H-můstku Připojte motor k H-můstku podle obrázku na druhém obrázku.
Nebo pokud pro Arduino používáte externí napájecí zdroj, můžete použít pin Vin.
Krok 4: Jak funguje LDR
První věc, která může potřebovat další vysvětlení, je použití rezistorů závislých na světle. Odpory závislé na světle (nebo LDR) jsou odpory, jejichž hodnota se mění v závislosti na množství okolního světla, ale jak můžeme pomocí Arduina detekovat odpor? To opravdu nemůžete, nicméně úrovně napětí můžete detekovat pomocí analogových pinů, které mohou měřit (v základním použití) mezi 0-5V. Nyní se možná ptáte „Jak převedeme hodnoty odporu na změny napětí?“, Je to jednoduché, děláme dělič napětí. Dělič napětí odebírá napětí a poté vydává zlomek tohoto napětí úměrně vstupnímu napětí a poměru dvou hodnot použitých odporů. Rovnice, pro kterou je:
Výstupní napětí = vstupní napětí * (R2 / (R1 + R2)) Kde R1 je hodnota prvního odporu a R2 je hodnota druhého.
Nyní to stále vyvolává otázku „Ale jaké hodnoty odporu má LDR?“, Dobrá otázka. Čím menší množství okolního světla, tím vyšší odpor, více okolního světla znamená nižší odpor. U konkrétních LDR jsem použil jejich rozsah odporu od 200 do 10 kilo ohmů, ale to se mění u různých, takže se podívejte, odkud jste je koupili, a zkuste najít datový list nebo něco podobného. případ R1 je ve skutečnosti naše LDR, vraťme tedy tuto rovnici zpět a udělejme nějakou matematickou magii (matematická elektrická magie). Nejprve musíme převést hodnoty kiloohmů na ohmy: 200 kiloohmů = 200 000 ohmů 10 kiloohmy = 10 000 ohmů Abychom zjistili, jaké je výstupní napětí, když jsme v černé barvě, připojíme následující čísla: 5 * (10 000 / (200 000 + 10 000)) Vstup je 5 V, protože to je to, co dostáváme z Arduina. Výše uvedené dává 0,24 V (zaokrouhleno). Nyní zjistíme, jaké je výstupní napětí ve špičkovém jasu pomocí následujících čísel: 5 * (10 000 / (10 000 + 10 000)) A to nám dává 2,5 V přesně. Toto jsou hodnoty napětí, které získáme do analogových pinů Arduina, ale nejsou to hodnoty, které budou v programu vidět, „Ale proč?“můžete se zeptat. Arduino používá analogový a digitální čip, který převádí analogové napětí na použitelná digitální data. Na rozdíl od digitálních pinů na Arduinu, které dokážou číst pouze VYSOKÝ nebo NÍZKÝ stav 0 a 5 V, analogové piny dokážou číst od 0 do 5 V a převést je na číselný rozsah 0 až 1023. Nyní s několika dalšími matematickými magiemi. můžeme vlastně vypočítat, jaké hodnoty Arduino skutečně načte.
Protože to bude lineární funkce, můžeme použít následující vzorec: Y = mX + C Kde; Y = digitální hodnota Kde; m = sklon, (náběh / běh), (digitální hodnota / analogová hodnota) Kde; Zachycení C = Y Průsečík Y je 0, takže dostaneme: Y = mXm = 1023/5 = 204,6. Proto: Digitální hodnota = 204,6 * Analogová hodnota Takže v černé tónu bude digitální hodnota: 204,6 * 0,24, což dává přibližně 49. A ve špičkovém jasu to bude: 204,6 * 2,5, což dává přibližně 511. Nyní se dvěma z nich nastavenými na dvou analogových pinech můžeme vytvořit dvě celočíselné proměnné pro uložení jejich hodnot dva a provést srovnávací operátory, abychom zjistili, který z nich má nejnižší hodnotu, otáčení robota tímto směrem.