INHOUDSOPGAWE:

Arduino lugversorgingsmodel: 6 stappe
Arduino lugversorgingsmodel: 6 stappe

Video: Arduino lugversorgingsmodel: 6 stappe

Video: Arduino lugversorgingsmodel: 6 stappe
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Julie
Anonim
Arduino lugversorgingsmodel
Arduino lugversorgingsmodel

As deel van 'n demonstrasie van ons span se vermoë om 'n model van 'n slim treintoestel vir bemarkingsdoeleindes te skep, was die doel om 'n stelsel te skep waarin 'n temperatuursensor data uit die stroombaan lees en die inligting omskakel in 'n temperatuurwaarde wat beide op 'n verligte skerm vertoon en gefokus op die vraag of 'n waaier aan- of uitgeskakel word. Die doel is om die rytoestande van passasiers te help akkommodeer deur 'n outomatiese stelsel te gebruik wat ook die temperatuur in die onmiddellike omgewing kan wys.

Deur 'n Arduino -mikrobeheerkit en MATLAB -weergawes 2016b en 2017b te gebruik, kon ons hierdie resultate met relatiewe sukses demonstreer.

Stap 1: Toerusting

Toerusting
Toerusting

Mikrobeheerkit met die volgende:

-Sparkfun Red Board

-Sparkfun Breadboard

-LCD -raad

-Potensiometer

-Temperatuur sensor

-Servo

-USB/Arduino -adapter

-Jumper drade (25, minimum)

Skootrekenaar (Windows 10) met USB -ingang

3D -gedrukte voorwerp (opsioneel)

Stap 2: Opstelling van mikrobeheerder

Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder
Opstelling van mikrobeheerder

Oorweeg dit: die hele stelsel bestaan uit enkele eenhede wat elk 'n beduidende faktor in die eindresultaat het. Om hierdie rede word dit sterk aanbeveel om 'n beeld van die stroombaan op te stel voordat drade in 'n ingewikkelde gemors geplaas word.

Beelde van elke individuele model kan gevind word in die handleiding van die Microcontroller -gereedskapstel of op die webwerf

Begin met die bevestiging van die temperatuursensor, potensiometer, servo -aansluitings en LCD op die bord. Dit word aanbeveel dat dit, vanweë die grootte van die LCD en die hoeveelheid drade daarvoor, op sy eie helfte van die broodbord geplaas moet word, met die ander stukke op die ander helfte en dat die potensiometer in 'n gebied is waar iemand kan draai sy knop maklik.

Vir verwysing:

LCD: c1-16

Servo: i1-3 (GND + -)

Temp sensor: i13-15 (- GND +)

Potensiometer: g24-26 (- GND +)

Begin dan met die verbindingsdrade met elke pen van die mikrobeheereenhede; alhoewel dit willekeurig was in die algehele grootskema, is die ontwerp gemaak met hierdie belangrike verbindings:

Koppel potensiometer aan LCD: f25 - e3

Servo GND -draad: j1 - Digitale invoer 9

Temp Sensor GND: j14 - Analoog Input 0

LCD-ingange: e11-e15-digitale ingang 2-5

e4 - Digitale invoer 7

e6 - Digitale invoer 6

(Let wel: as dit suksesvol is, moet albei ligte aan die rand van die LCD aanskakel, en die potensiometer kan help om die helderheid daarvan aan te pas sodra die adapter van krag voorsien word.)

Opsioneel: 'n 3D -gedrukte voorwerp is as deel van 'n vereiste gebruik. Om moontlike skade aan die meer brose dele te voorkom, is 'n verlengde omhulsel as 'n mou om die LCD geplaas. Die metings van die LCD-skerm was ongeveer 2-13/16 "x 1-1/16" x 1/4 ", en slegs die hoogte is aansienlik verander. As 'n 3D-drukker maklik beskikbaar is, oorweeg dit om 'n persoonlike voorwerp by te voeg alhoewel dit onnodig is. Let ook daarop dat metings kan verskil.

Stap 3: MATLAB -opstelling

MATLAB -opstelling
MATLAB -opstelling
MATLAB -opstelling
MATLAB -opstelling

Installeer 'n meer bygewerkte weergawe van MATLAB (2016a en later), beskikbaar op die MathWorks -webwerf https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Sodra dit oopgemaak is, gaan na Byvoegings op die tuisblad en laai 'MATLAB-ondersteuningspakket vir Arduino-hardeware' af sodat die opdragte van die mikrobeheerder toeganklik is.

Sodra dit voltooi is, kan u 'n toets doen om die verbinding van die mikrobeheerder met die rekenaar/skootrekenaar te bepaal. Nadat u dit met die USB -adapter uit die gereedskapstel verbind het, voer die opdrag "fopen (serial ('nada')) in."

'N Foutboodskap verskyn met die aansluiting as "COM#", wat nodig is om 'n arduino-voorwerp te skep, solank dit altyd dieselfde invoer is.

Omdat die LCD nie 'n direkte verbinding met die Arduino -biblioteek het nie, moet 'n nuwe biblioteek geskep word om boodskappe te vertoon. 'N Aanbeveling is om 'n LCDAddon.m -lêer te skep uit die LCD -voorbeeld in die MATLAB -hulpvenster nadat u "Arduino LCD" gesoek en in die +arduinoioaddons -lêergids geplaas het, of die saamgeperste vouer gebruik en al die inhoud daarvan na die voormelde gekopieer gids.

As dit suksesvol is, is die kode om 'n Arduino -voorwerp in MATLAB te skep, soos hieronder getoon.

a = arduino ('com#', 'uno', 'biblioteke', 'voorbeeldLCD/LCDAddon');

Stap 4: Funksies

Funksies
Funksies
Funksies
Funksies

Skep 'n MATLAB -funksie. Vir die insette gebruik ons veranderlikes "eff" en "T_min"; vir uitsette, alhoewel dit in die algehele ontwerp onnodig was, het ons veranderlike "B" gebruik as 'n manier om data uit die resultate te bevat. Met die "eff" -invoer kan u die maksimum snelheid van die servo bestuur, en die "T_min" -invoer beheer die gewenste minimum temperatuur. Die waarde "B" moet dus 'n matriks lewer wat drie kolomme bevat vir die tyd, die temperatuur en die doeltreffendheid van die waaier. As 'n bonus vir detail, het die onderstaande kode ook 'n as-verklaring, sodat die waaiersnelheid met vyftig persent sal verminder as dit naby die gewenste minimum temperatuur kom.

As alle insette en jumperdrade presies geplaas is en as die poort van die arduino -verbinding COM4 is en die funksienaam "fanread" is, behoort die volgende kode voldoende te wees:

funksie [B] = fanread (Tmin, eff)

duidelik a; duidelik lcd; a = arduino ('com4', 'uno', 'biblioteke', 'voorbeeldLCD/LCDAddon');

t = 0; t_max = 15; % tyd in sekondes

lcd = addon (a, 'VoorbeeldLCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD (lcd, 'Rows', 2, 'Columns', 2);

as eff> = 1 || e <0

fout ('Waaier sal nie aktiveer nie, tensy eff tussen 0 en 1 gestel is')

einde

vir t = 1: 10 % aantal lusse/intervalle

duidelik c; % voorkom dat die fout herhaal word

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; % skatting vir spanningsreekse 2,7-5,5 V

as TempC> Tmin as TempC

c = ['Temp', num2str (TempC, 3), 'C Aan'];

skryfPWMDutyCycle (a, 'D9', eff/2); % skakel servo aan teen halfspoed

spd = 50;

anders

c = ['Temp', num2str (TempC, 3), 'C Aan'];

writePWMDutyCycle (a, 'D9', eff); % skakel servo aan teen die gegewe spoed

spd = 100;

einde

anders

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); % gesluit as dit reeds aan is

spd = 0;

einde

printLCD (lcd, c);

pouse (3); % drie sekondes verloop per lus

tyd (t) = t.*3;

tempplot (t) = TempC;

handeling (t) = spd;

subplot (2, 1, 1)

plot (tyd, tempplot, 'b-o') % lyngrafiek

as ([0 33 0 40])

xlabel ('Tyd (sekondes)')

ylabel ('Temperatuur (C)')

hou vas

plot ([0 33], [Tmin Tmin], 'r-')

hou vas

plot ([0 33], [Tmin+2 Tmin+2], 'g-')

subplot (2, 1, 2)

staaf (tyd, handeling) % staafgrafiek

xlabel ('Tyd (sekondes)')

ylabel ('Doeltreffendheid (%)')

einde

B = transponeer ([tyd; tempplot; handeling]);

einde

Noudat die funksie voltooi is, is dit tyd om te toets.

Stap 5: Toets

Toets
Toets
Toets
Toets

Toets nou die funksie in die opdragvenster deur "function_name (input_value_1, input_value_2)" in te voeg en kyk. Maak seker dat daar geen Arduino -voorwerp reeds bestaan nie; gebruik die opdrag "verwyder a" om dit te verwyder. As daar foute voorkom, kyk of die aansluitings op die verkeerde plek is of dat die verkeerde digitale of analoog insette gebruik word. Die resultate sal na verwagting wissel, hoewel dit veroorsaak kan word deur die plasing van sekere jumperdrade en die temperatuursensor.

Die verwagtinge van die resultate moet veranderings in die prestasie van die servo en die data op die LCD veroorsaak. Met elke interval van drie sekondes moet 'n teksreël die temperatuur in Celsius vertoon en of die waaier aktief is terwyl die waaier op volle spoed, halfspoed of geen spoed loop nie. Gegewens behoort waarskynlik nie konsekwent te wees nie, maar as u meer verskillende resultate wil hê, plaas die "Tmin" -waarde naby die gemiddelde temperatuur wat die stroombaan produseer.

Stap 6: Gevolgtrekking

Afsluiting
Afsluiting

Alhoewel dit 'n moeilike taak was om deur proef en fout te verrig, was die eindresultate nogal interessant en bevredigend. 'N Stelsel as sodanig help om te illustreer hoeveel ingewikkelde masjiene, of selfs sommige van hul onderdele, gesien kan word as 'n versameling onafhanklike onderdele wat saamgevoeg is om 'n spesifieke doel te bereik.

As gevolg van die taamlik eenvoudige ontwerp van die finale projek, kan diegene wat 'n belangstelling in die verbetering van die prestasie het, aanpassings en veranderings in die finale produk aanbring, wat die projek beter en meer uitgebrei kan maak. Dit onthul egter swakhede in die stroombaan, soos die servo se aktivering, wat sporadiese skommelinge in die stroomlesing van die stroombaan kan veroorsaak, wat kan veroorsaak dat die stelsel nooit identiese resultate lewer nie. Daar was ook probleme met die verandering van servosnelheid wanneer 'eff' 0.4 en hoër is ingestel. As 'n temperatuur- en humiditeitsensor gebruik is, sou die finale model ingewikkelder wees, maar meer konsekwente waardes. Dit is nietemin 'n ervaring wat toon dat 'n komplekse masjien as 'n kombinasie van sy eenvoudige dele kan funksioneer.

Aanbeveel: