- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 26

Thema: MAX31855 via SPI ansprechen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270

    Idee

    Dieser kurze Code ist für einen MAX31855SA geschrieben:

    '************************************************* ******************************
    ' Test Display ST7565 128x64
    ' Hardware: EA DOGxL128-6
    '
    ' Display works with 3,3V Level
    '
    ' use 1024 Byte Daten Buffer
    '
    ' Date:22.05.2014
    ' By Hkipnik
    ' © Copyright by H.Kipnik 2012
    ' Date 14.01.2015
    ' Email: Hkipnik@aol.com
    '
    '************************************************* ******************************

    '************************************************* ******************************
    'MAX 31855SA
    '2016 by WL
    '************************************************* ******************************


    $regfile = "m328pdef.dat"
    $crystal = 16000000
    $hwstack = 150
    $swstack = 150
    $framesize = 200

    '************************************************* ******************************

    Config Portd.3 = Output 'DISPLAY_CS
    Lcd_cs Alias Portd.3

    Config Portc.2 = Output 'DISPLAY_A0
    Lcd_rs Alias Portc.2

    Config Portc.0 = Output 'DISPLAY_SI
    Data_out Alias Portc.0

    Config Portc.1 = Output 'DISPLAY_SCK
    Lcd_clk Alias Portc.1

    Config Portc.3 = Output 'DISPLAY_Reset
    Lcd_rst Alias Portc.3

    'Config Graphlcd = 128 * 64eadogm , Cs1 = Portd.3 , A0 = Portc.2 , Si = Portc.0 , Sclk = Portc.1 , Rst = Portc.3

    Config Spi = Hard , Interrupt = Off , Data_order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 16 , Noss = 1

    Spiinit

    Config Portb.2 = Output
    Max_cs Alias Portb.2
    Max_cs = 1

    $include "Eadog128declaration.inc" 'Declaration SUB

    Call Lcd_init() 'Init Display

    '************************************************* ******************************

    'use for Demo

    Dim Text11 As String * 40
    Dim Temp_s As Single

    Dim Element As Integer
    Dim Element_l As Byte At Element Overlay
    Dim Element_h As Byte At Element + 1 Overlay
    Dim Referenz As Integer
    Dim Referenz_l As Byte At Referenz Overlay
    Dim Referenz_h As Byte At Referenz + 1 Overlay

    Call Lcd_clear(white)

    Do

    Max_cs = 0
    Spiin Element_h , 1
    Spiin Element_l , 1
    Spiin Referenz_h , 1
    Spiin Referenz_l , 1
    Max_cs = 1


    Text11 = Bin(referenz)
    Call Lcd_text(text11 , 0 , 25 , 1)

    Text11 = Bin(element)
    Call Lcd_text(text11 , 0 , 35 , 1)

    Shift Referenz , Right , 4
    Temp_s = Referenz \ 16
    'Text11 = Str(temp_s)
    Text11 = Fusing(temp_s , "#.#")
    Call Lcd_text(text11 , 10 , 5 , 2)

    Shift Element , Right , 2
    Temp_s = Element \ 4
    'Text11 = Str(temp_s)
    Text11 = Fusing(temp_s , "#.#")
    Call Lcd_text(text11 , 10 , 45 , 2)

    Call Lcd_show()
    Waitms 500


    Loop

    End
    $include "Eadog128-6.inc"
    'include used fonts
    $include "Font\font8x8.font"
    $include "Font\font16x16.font"
    $include "Font\My12_16.font"

    Die Ausgabe (EADOG-LCD) musst Du dir weg denken.
    Dann bleibt nicht mehr viel übrig............
    mfG
    Willi

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    tausend Dank...

    schade das ich´s noch nicht testen kann...

    Welche Temperaturen habt ihr damit so gemessen? Ich hatte vor, Temperaturen von über 1000°C zu messen gibt dazu evtl. Erfahrungen/Hinweise? (z.B.: Genauigkeit , müssen die werte noch geglättet /gefiltert werden?, Korrekturfaktoren?)

    mfG
    Mario
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.310
    @Mario: Ja das ist Pascal

    Gemessen wurde die Ausgangstemperatur eines Turboladers.
    Ich programmiere mit AVRCo

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Das ganze ist letztendlich eine Steuerung/Regelung für einen Keramik-Brennofen (1280°C) geworden.
    Ein entsprechender Filter ist vorteilhaft.
    Zur Genauigkeit kann ich nichts sagen.
    Kommt im Keramikbereich auch nicht auf 1° an.
    Mit der Referenztemperatur die Raumtemperatur kompensieren und gut ist.
    mfG
    Willi

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Danke für eure Antworten...

    @Wl, darum soll es bei mir auch gehen... Kannst du mir bitte ein paar Eckdaten zu deinem Projekt nennen? Hast du auch den Brennofen selber gebaut?

    Erste Überlegungen sind:
    -Brennraum ca. 30x30x30cm
    -20m 1,2mm Kanthaldraht
    -SSRelais (PWM 100Hz)
    -MAX31855 mit K-Type Sensor

    Mit welcher Frequenz hast dein Relais (SSR?) angesteuert?

    mfG
    Mario
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    31.05.2009
    Beiträge
    270
    Hallo Mario,
    die Steuerung ist für mehrere verschiedene Öfen gedacht (Steingut/Steinzeug).
    Im Moment benutze ich sie ab und zu mit einem DIY-Probenofen mit ca 2l Innenraum.
    Aber auch 50l und mehr sind möglich.

    K-Typ Sensor verschleisst schnell.
    S / R hält sehr, sehr lange.

    Die PWM-Frequenz liegt weit unter 1Hz weil die Trägheit der Regelstrecke gross ist und sie ist temperaturabhängig.
    In den unteren Temperaturbereichen gibt es sonst leicht Überschwinger.

    Viel Spass beim bauen!
    mfG
    Willi

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Hallo,

    so der Max ist da. Das Auslesen klappt, habe Willis Code genommen... Danke nochmal.

    Ich musste nur die "Config Spi" etwas anpassen. Mit "Noss=1" hat er bei mir nichts ausgelesen und mit "Clockrate=128" schwanken die Temperaturwerte nicht so stark.


    Code:
    Config Spi = Hard , Interrupt = Off , Data_Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 128
    Bei den ersten Messungen habe ich folgende Abweichung feststellen können:
    Bei 25°C - ca. -2,5°C Abweichung
    Bei 100°C - ca. -5°C Abweichung
    Bei 250°C- ca. -10°C Abweichung

    Ist das Normal?

    mfG
    Mario
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

Ähnliche Themen

  1. LCD über I2C ansprechen
    Von Reissdorf im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 30.12.2012, 19:48
  2. RFM ansprechen
    Von runner02 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 11.03.2012, 11:01
  3. PCF 8474 ansprechen ?
    Von Goliath im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.03.2008, 14:17
  4. USB Ansprechen
    Von DHigh im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 05.10.2006, 20:37
  5. RS232 ansprechen
    Von Goblin im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 25.04.2005, 08:24

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress