Етикет: инвертиран захарен сироп

  • Машина за инвертиране на захарен сироп

    Докато си почивах реших да направя машина за инвертиран сироп базирана на arduino (закупен от robotev.com. Силно препоръчвам!). Какво е инвертиран сироп? Захарен сироп(захар + вода), но инвертиран т.е. захарта се разбива на прости захари(монозахариди), глюкоза и фруктоза. Разбиването се получава, чрез ензимаИнвертаза„.

    Това е целта на инвертирането, а машината трябва да изпълнява следния примерен процес(Примерен защото може да се променя, разбира се):

    Време на процеса: 24 часа
    Температура за поддържане:  55 градуса
    На всеки 15 минути мотора се включва и разбърква работния разтвор по 2 минути на всеки час, но после го промених на 2 минути разбъркване на всеки 15 минути т.е. по 8 минути на час.

    За автоматично контролиране на нагревателите и мотора използвах perl + arduino + SSR релета+температурни сензори, разбира се. Можех да го направя само на arduino, но така, чрез Perl ми е далеч по- лесно и гъвкаво, най- малкото и лесно може да се направи да говори, да се стартира от разстояние(и при ардуино става, но ми е по- трудно).

    Машината е направена и с възможност за ръчен контрол т.е. без автоматика(използват се ключовете от контролното табло)

    Рецептата по която инвертирам сиропа /100 л. работен разтвор/ е следната:

    Вода : 30 кг.
    Захар : 70 кг.
    Ензим инвертаза : 5 гр.
    Време : 24 часа
    Температура :55 *C

    Ензима инвертаза е закупен от Аналитика ЕООД ,
    Цена на ензима инвертаза: 50 гр. – 50 лв. , 500 гр. – 500 лв.

    При време: 24 часа, 50 гр. ензим инвертаза са достатъчни за инвертиране на 1000 кг инвертиран сироп.

    Снимки на машината за инвертиран сироп:

    mashina_invertiran_sirop_1

    mashina_invertiran_sirop_2

    mashina_invertiran_sirop_6

    mashina_invertiran_sirop_5

    mashina_invertiran_sirop_4

    Снимки на мониторинга:
    invertiran_sirop_izgled_monitor

    От мониторинга се вижда кога е пусната машината, кога ще спре, дали е включен нагревателя или мотора,текуща температура, както и колко време остава до завършване на процеса(обратен брояч).

    Снимка на схемата(свързването) в таблото:

    shema_invertiran_sirop-1
    Код на ардуино:

    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 2
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);

    int pin_nagrevatel=12;
    int pin_motor=11;
    float temp_low=26;
    int temp_find=27;

    int inputserial;

    // the setup routine runs once when you press reset:
    void setup() {
    // initialize the digital pin as an output.
    Serial.begin(9600);
    pinMode(pin_nagrevatel, OUTPUT);
    pinMode(pin_motor, OUTPUT);

    sensors.begin();
    }

    // the loop routine runs over and over again forever:
    void loop() {

    sensors.requestTemperatures(); // Send the command to get temperatures
    float temp1 = sensors.getTempCByIndex(0);

    //Kontrol na whodnite komandi
    while( Serial.available() > 0 )
    {
    inputserial = Serial.read();
    Serial.println(inputserial);

    switch( inputserial)
    {
    case 48://0
    delay (1000);
    Serial.print(„temp: „);
    Serial.println(temp1);
    delay (1000);

    break;
    case 49://1
    digitalWrite(pin_nagrevatel, HIGH);
    Serial.println(„Nagrewatel ON „);
    break;
    case 50://2
    digitalWrite(pin_nagrevatel, LOW);
    Serial.println(„Nagrewatel OFF „);
    break;

    case 51://3
    digitalWrite(pin_motor, HIGH);
    Serial.println(„Motor ON „);
    break;

    case 52://4
    digitalWrite(pin_motor, LOW);
    Serial.println(„Motor OFF „);
    break;
    };
    }//End of while( Serial.available() > 0 )
    }

    Код на perl(martin_invert.pl):

    #!/usr/bin/perl -w
    ### Invertirane na zaharen sirop ver. 0.25 ##
    ### Writte by Martin Petrov | mpetrov.net ###
    ### Date Thu May  7 08:05:20 EEST 2015  #####

    use Term::ANSIColor;
    use Device::SerialPort qw( :STAT 0.19);
    use Term::Screen; #cpan; install Term::Screen
    use DateTime; #cpan; install DateTime

    ### Basic variable ###
    my $temp_find=55; #Temperatura za poddyrjane
    my $temp_min=54; #Minimalna temperatura pri koqto se wkl. nagrewatelite
    my $timer_hours=24;
    my $filename=“report.log“;
    open(FILE, „>>$filename“) or die „Could not open file ‘$filename’ $!“;

    ### Ext variables ###
    my $dt   = DateTime->now( time_zone  => ‘Europe/Sofia’);
    my $date = $dt->ymd;
    my $time = $dt->hms;
    my $date_time_start = „$date $time“;
    $dt->add(hours => $timer_hours);$date = $dt->ymd;$time = $dt->hms;my $date_time_stop = „$date $time“;
    my $terminal = new Term::Screen;
    my $nagrevatel_run=0;
    my $motor_run=0;
    my $temp_cur=“00″;

    =comment
    my $port = Device::SerialPort->new(„/dev/ttyACM0“);
    if(!$port) {$port= Device::SerialPort->new(„/dev/ttyACM1“);};
    if(!$port) {$port= Device::SerialPort->new(„/dev/ttyACM2“);};
    if(!$port) {$port=Device::SerialPort->new(„/dev/ttyACM3“);};

    $port->baudrate(9600);
    $port->parity(‘none’);
    $port->databits(8);
    $port->stopbits(1);

    $port->stty_ignbrk(1);
    $port->stty_icrnl(0);
    $port->stty_opost(0);
    $port->stty_inlcr(0);
    $port->stty_isig(1);
    $port->stty_icanon(0);
    $port->stty_echo(0);
    $port->stty_echoe(0);
    $port->stty_echok(0);
    $port->stty_echoctl(0);
    $port->stty_echoke(0);
    $port->are_match(„\n“);
    $port->write_settings() or die „write settings“;
    sleep 2;
    =cut

    ### [B]  Wzima temperaturata ###
    sub get_temp()
    {
    $port->write(„0“);

    my $temp;
    while (1) {
    my $char = $port->lookfor(4);

    if ($char)
    {
    if ($char =~ /\d\.\d/) {$temp=$char;last; }
    };#End of if ($char)
    }

    $temp =~ s/^\s+|\s+$//g;
    return „$temp“;
    };#End of sub get_temp()
    ### [B]  Wzima temperaturata ###

    ###########################################

    #Prawi pyrwo izmerwane na temperaturata
    #$temp_cur=get_temp();
    $temp_cur=33;
    open(FILE, „>>$filename“);print FILE „$date_time_start START [$temp_cur *C]\n“;close FILE;

    my $countdown = $timer_hours*60*60; # in secs.
    $| = 1;

    my $beg_time = time;
    my $end_time = $beg_time + $countdown;

    for (;;) {
    $dt   = DateTime->now( time_zone  => ‘Europe/Sofia’);$date = $dt->ymd;$time = $dt->hms;$datetimenow = „$date $time“;

    my $time = time;
    last if ($time >= $end_time);

    $chas=($end_time – $time) / (60*60);
    $min=($end_time – $time) / (60) % 60;
    $sek=($end_time – $time) % 60;

    $terminal->clrscr();
    print colored(„Инвертиране на захарен сироп (Инвертиран сироп) от Мартин Петров – www.mpetrov.net“, ‘black on_white’),“\n“;
    print colored(„\rСтарт: $date_time_start | Стоп: $date_time_stop | Темература: $temp_cur *C        „, ‘black on_green’), „\n“;

    print colored(„\rВключен нагревател: „, ‘black on_red’);
    if ($nagrevatel_run==1) {

    print colored(“ ДА „, ‘yellow on_blue’);
    } else {

    print colored(“ НЕ „, ‘black on_yellow’);
    };

    print colored(“ | Включен мотор: „, ‘black on_red’);
    if ($motor_run==1)
    {
    print colored(“ ДА „, ‘yellow on_blue’);
    } else {
    print colored(“ НЕ „, ‘black on_yellow’);
    };
    print colored(“                                    „, ‘black on_red’),“\n“;
    print „\n\r“;
    printf(„\rСиропа ще бъде инвертиран след: %02d ч. : %02d м. : %02d с.\r“,$chas,$min,$sek);

    #Wkl. motor
    if ((($min==59) and ($sek==59)) or (($min==29) and ($sek==59)))
    {

    if ($motor_run==0)
    {
    $motor_run=1;
    #$port->write(„3“);
    open(FILE, „>>$filename“);print FILE „$datetimenow MOTOR ON\n“;close FILE;
    };#End of if ($motor_run==0)
    };

    #Izkl. motor
    if ((($min==57) and ($sek==59)) or (($min==27) and ($sek==59)) )
    {
    if ($motor_run==1)
    {
    $motor_run=0;
    #$port->write(„4“);
    open(FILE, „>>$filename“);print FILE „$datetimenow MOTOR OFF\n“;close FILE;
    };#End of if ($motor_run==1)
    };

    my $chetno=$min%2;

    #Ako e chetno t.e. e = 0 togawa prowerqwa t.e. na wseki 2 minuti
    if (($chetno==0)and($sek==59))
    {
    #$temp_cur=get_temp();
    $temp_cur=33;
    if ($temp_cur<=$temp_min)
    {
    #Wkl. nagrevatel
    if ($nagrevatel_run==0)
    {
    $nagrevatel_run=1;
    #$port->write(„1“);
    open(FILE, „>>$filename“);print FILE „$datetimenow NAGREVATEL ON [$temp_cur *C]\n“;close FILE;
    }
    else
    {
    open(FILE, „>>$filename“);print FILE „$datetimenow STAY NAGREVATEL ON [t. min: $temp_min *C | t_find: $temp_find *C > t. current: $temp_cur *C]\n“;close FILE;
    };#End of if ($nagrevatel_run==0)
    }#End of if ($temp_cur<=$temp_min)
    else
    {
    if ($nagrevatel_run==1)
    {
    $nagrevatel_run=0;
    #Izkl. nagrewatel
    #$port->write(„2“);
    open(FILE, „>>$filename“);print FILE „$datetimenow NAGREVATEL OFF [$temp_cur *C]\n“;close FILE;
    };#End of if ($nagrevatel_run==1)
    };#End of else if ($temp_cur<=$temp_min)
    };#End of if (($min==59) and ($sek==59))

    sleep(1);
    }#End of for (;;) {

    open(FILE, „>>$filename“);print FILE „$datetimenow STOP\n“;close FILE;
    $port->close();

  • Инвертиран захарен сироп , Рецепта (инвертиране чрез инвертаза)

    Приготвяне на инвертиран сироп (работен разтвор: 100 кг)(Рецепта от Софрон Софрониев)

    1. Добавя се 30кг. вода
    2. Стартира се нагревателя на 60*C
    3. След достигане на постоянна температура от 60*C се добавя 70кг. захар.
    4. Непрестанно се бърка разтвора докато захарта не се разтвори на 100% във водата.
    5. След пълното разтваряне на захарта се добавя ензима инвертаза – 5гр.
    6. След поставяне на ензима спираме постоянното разбъркване и разбъркваме на всеки час по 2 минути.
    7. След като сме поставили ензима засичаме 24 часа и когато ги достигнем спираме нагревателя и изчакваме работния разтвор да изстине.

    Видео на лекция на Софрон Софрониев(Интересно за инвертиране на сироп, 42 минута, 14 секунда) – https://www.youtube.com/watch?v=PDCYMFlMLWk

    PS: Всичко се приготвя в съдове от inox 304