- MATLAB grafische gebruikersinterface maken voor het plotten van grafieken
- MATLAB-code voor het plotten van de grafiek
- Materiaal vereist
- Schakelschema
- Teken de grafiek met MATLAB
Grafieken zijn altijd handig om de gegevens te visualiseren en het wordt heel gemakkelijk om trends en patronen te vinden door ernaar te kijken. Er is veel software beschikbaar om grafieken te plotten op basis van de invoerwaarden, vandaag zullen we MATLAB gebruiken om grafieken te plotten op basis van de temperatuurgegevens van de LM35-sensor. Deze tutorial geeft je een basisidee over hoe je een real-time grafiek kunt plotten met MATLAB. Arduino Uno wordt hier gebruikt om temperatuurgegevens van de LM35-temperatuursensor te krijgen.
Voordat u verder gaat, als u nieuw bent bij MATLAB, kunt u onze eerdere MATLAB-tutorials bekijken voor een beter begrip:
- Aan de slag met MATLAB: een korte introductie
- Koppeling tussen Arduino en MATLAB - Knipperende LED
- Seriële communicatie tussen MATLAB en Arduino
- DC-motorbesturing met MATLAB en Arduino
- Stappenmotorbesturing met MATLAB en Arduino
MATLAB grafische gebruikersinterface maken voor het plotten van grafieken
Eerst moeten we GUI (Graphical User Interface) bouwen voor Plot a Graph met de temperatuurgegevens. Om de GUI te starten, typt u de onderstaande opdracht in het opdrachtvenster
gids
Er wordt een pop-upvenster geopend en selecteer vervolgens een nieuwe lege GUI zoals weergegeven in de onderstaande afbeelding,
Nu moeten we een drukknop, twee assen en een tekstvak kiezen voor de grafische interface van MATLAB . De drukknop wordt gebruikt om de temperatuurmeting te starten, twee assen om de grafiek te plotten en een tekstvak om de huidige temperatuurwaarde weer te geven.
Om het formaat van de knop te wijzigen of om de vorm van de knop, de knop Assen of tekst bewerken te wijzigen, klikt u erop en kunt u de hoeken van de knop slepen. Door op een van deze te dubbelklikken, kunt u de kleur, string en tag van die specifieke knop wijzigen. Na maatwerk ziet het er zo uit
U kunt de knoppen naar eigen keuze aanpassen. Als je dit nu opslaat, wordt er een code gegenereerd in het Editor-venster van MATLAB. Om ervoor te zorgen dat uw Arduino een bepaalde taak uitvoert die verband houdt met uw project, moet u deze gegenereerde code altijd bewerken. Dus hieronder hebben we de MATLAB-code bewerkt. U kunt meer leren over het opdrachtvenster, het editorvenster, enz. In Aan de slag met MATLAB-zelfstudie.
MATLAB-code voor het plotten van de grafiek
De volledige MATLAB-code voor het ontwerpen van een thermometer met LM35 en Arduino wordt aan het einde van dit project gegeven. Verder voegen we hier het GUI-bestand (.fig) en het codebestand (.m) toe om te downloaden, waarmee u de knoppen of de asgrootte naar wens kunt aanpassen. We hebben de gegenereerde code bewerkt zoals hieronder wordt uitgelegd.
Kopieer en plak de onderstaande code op regel nr. 74 om ervoor te zorgen dat de Arduino met MATLAB praat elke keer dat u het m-bestand uitvoert.
wis alles; globaal een; een = arduino ();
Als u naar beneden scrolt, ziet u dat er twee functies zijn gemaakt voor Pushbutton en Tekst bewerken in de GUI, er wordt geen functie gemaakt voor Axes. Schrijf nu de code in de functie Drukknop (startknop) volgens de taak die u wilt uitvoeren.
In Start -functie knop, kopieer en plak de onderstaande code net voor het einde van de functie om de temperatuur sensor te starten. Voor het continu detecteren, weergeven en grafisch plotten van de temperatuur gebruiken we while-lus . We hebben na elke iteratie een pauze van 1 seconde voorzien, zodat de temperatuurwaarde elke seconde wordt bijgewerkt.
x = 0; go = waar; globaal een; while go waarde = readVoltage (a, 'A1'); temp = (waarde * 100); disp (temp); x =; plot (handles.axes1, x); rooster aan; xlabel ('Tijd (seconden)') ylabel ('Temperatuur (° C)'); title ('Realtime temperatuurgrafiek'); drawnow set (handles.edit1, 'String', num2str (temp)); pauze (1); einde
Laten we nu eens kijken hoe de code werkt. In onderstaande regel met drie regels hebben we de beginwaarde van ' x ' op nul gezet, waarbij ' go ' wordt gedefinieerd als true om de while- lus te starten en ' global a' gedeclareerd voor het aanroepen van de Arduino in de functie.
x = 0; go = waar; globaal een;
Onderstaande coderegel wordt gebruikt om de spanningswaarde te detecteren van de analoge pin A1 van de Arduino die is verbonden met de 'OUT'-pin van de LM35-temperatuursensor. De output is de spanningswaarde, niet de analoge waarde.
waarde = readVoltage (a, 'A1');
Hier kunnen we de spanningswaarde direct omzetten in de temperatuurwaarde (graden Celsius), door deze te vermenigvuldigen met 10
temp = (waarde * 100);
Om nu de grafiek te plotten, wordt de functie 'plot (handles.axes1, x)' gebruikt, waarbij axes1 de referentie of naam is van het Graph-gebied. Dus als u meer dan één grafiek plot, hoeft u alleen maar de naam van de assen te wijzigen, alsof u een andere grafiek plot, kunt u een plot schrijven (handles.axes2, x) '
'Grid aan' wordt gebruikt om In de rasterweergave van de grafiek worden 'xlabel', 'ylabel' en ' titel ' gebruikt voor het benoemen van de x-as, y-as en titel.
plot (handles.axes1, x); rooster aan; xlabel ('Tijd (seconden)') ylabel ('Temperatuur (° C)'); title ('Realtime temperatuurgrafiek');
' Drawnow' wordt gebruikt om de grafische weergave in realtime bij te werken.
getrokken
Om de waarde van de temperatuur weer te geven in het tekstvak om elke seconde onderstaand commando te gebruiken, set (handles.edit1, 'String', num2str (temp));
Materiaal vereist
- MATLAB geïnstalleerde laptop (voorkeur: R2016a of hogere versies)
- Arduino UNO
- LM35 - Temperatuursensor
- Verbindingsdraden
- Breadboard
Schakelschema
Teken de grafiek met MATLAB
Na het instellen van de hardware volgens het schakelschema, klikt u op de knop Uitvoeren om de bewerkte code in.m-bestand uit te voeren
Het kan enkele seconden duren voordat MATLAB reageert, klik niet op een GUI-knop totdat MATLAB een bezet bericht in de linker benedenhoek toont, zoals hieronder getoond,
Als alles klaar is, klikt u op de startknop en u begint met het ophalen van de temperatuurgegevens in het grafische gebied en in het tekstvak . De waarde wordt automatisch elke seconde bijgewerkt. Dit interval van een seconde kunt u dienovereenkomstig wijzigen in de MATLAB-code.
De uitvoer ziet eruit als de onderstaande afbeelding,
Dit is hoe je de grafiek kunt plotten voor elke inkomende waarde van de Arduino met MATLAB.
Bekijk de onderstaande demonstratievideo voor een goed begrip.