Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: eemuratozan - 05 Ağustos 2015, 14:29:08

Başlık: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 05 Ağustos 2015, 14:29:08
         Arkadaşlar merhaba,

         Çates Elektrik Üretim A.Ş.'de eski adıyla Çatalağzı Termik Santralinde çalışan Ölçü Kontrol ve Otomasyon Mühendisiyim. Santralimize yeni bir kamyon kantarı kurduk. Bu kantar için de yeni bir kömür numune alma sistemi kuruldu. Sistem çok basit ve hidroliktir. Kumandası ise basit bir joystick ile yapılmaktadır. Kumanda üzerindeki butonlar şunlardır: Yukarı, Aşağı, Bom İleri, Bom Geri, Sağa Dön, Sola Dön, Helezon Çalıştır, Helezonu Ters Yönde Çalıştır, Fan ve Start/Stop... Tüm butonlar direk 220 V ile çalışmaktadır. Yani Röle Bile koyulmamış. Biz de bu sistemi geliştirmek istiyoruz.
         
         Dolayısıyla ilk düşündüğümüz biraz fantazi gibi görünebilir ama picle röle çektirip numune alma işlemini tamamen otomatik gerçekleştirmek. Bunun için zaman gecikmesi koyarak kod yazdım.

         Sizlerden istediğim şey sizin çözümleriniz nelerdir? Neyi doğru neyi yanlış yaptığım hakkında fikirleriniz almak isterim.

#include "C:\Users\MuratOzanUZUNTAŞ\Desktop\CCS C Denemeleri\Numune Alma Sondası 2.h"
#use delay(clock=4000000)         // osilatör hızı 4 MHz olarak ayarlandı
#define use_portb_lcd TRUE        // b portu LCD için ayrıldı
#include <LCD.C>
#use fast_io(b)                   // b portu giriş-çıkış olarak kullanılacak
#use fast_io(c)                   // c portu giriş-çıkış olarak kullanılacak
#use fast_io(d)                   // d portu giriş-çıkış olarak kullanılacak



void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   lcd_init();

   // TODO: USER CODE!!


   set_tris_b(0x00);               //
   set_tris_c(0x00);               // b,c,d portları komple çıkış
   set_tris_d(0x00);               //

   output_b(0x00);                 //
   output_c(0x00);                 // Başlangıçta tüm portlar 0 değerinde
   output_d(0x00);                 //

   while(1)
   {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune islemi\nbasliyor...");

         delay_ms(3000);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fYukari yonde\nkalkiyor...");
         output_high(pin_c0);
         output_high(pin_d0);
         delay_ms(1500);
         output_low(pin_d0);
         delay_ms(1500);
         output_low(pin_c0);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fSola donuyor...");
         output_high(pin_d1);
         delay_ms(2000);
         output_low(pin_d1);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune aliniyor\nHelezon acik...");
         output_high(pin_d2);
         output_high(pin_d3);
         delay_ms(5000);
         output_low(pin_d3);
         output_low(pin_d2);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fYukari yonde\nkalkiyor...");
         output_high(pin_c0);
         delay_ms(3000);
         output_low(pin_c0);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fSaga donuyor...");
         output_high(pin_d4);
         delay_ms(2000);
         output_low(pin_d4);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune bosaliyor\nHelezon kapali...");
         output_high(pin_d5);
         output_high(pin_d6);
         delay_ms(1500);
         output_low(pin_d6);
         delay_ms(1500);
         output_low(pin_d5);

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fFan calisiyor...\nN. Alma Bitti...");
         output_high(pin_d7);
         delay_ms(1500);
         output_low(pin_d7);
         





         break;



   }






}






Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Tagli - 05 Ağustos 2015, 15:42:21
Zaman gecikmesi kullanmak genelde tehlikeli bir yaklaşımdır. En basit şekliyle bile olsa kapalı çevrim kontrol şart. Örneğin cihazın hareket ederken biz dizi düğmeyi tetikleyerek durması veya bir sonraki harekete geçmesi daha güvenilir olur.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 05 Ağustos 2015, 15:45:53
işin içinde zamanlayıcı ile çıkamazsak sensör ile desteklemeyi düşünüyoruz. çünkü numune alma sondası kamyon kasasından random şekilde numune alacak yani hep aynı noktalardan almayacak. bir de diğer bir çekincem şu eğer sistem aniden durursa tekrar çalıştırdığımda nasıl tepki verecek kaldığı yerden devam etmesini nasıl sağlarım ? ve son olarak picle bu işi yapabilir miyim ?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Erol YILMAZ - 05 Ağustos 2015, 15:47:37
Bu iş PIC'le de olur daha basit yapılar ile de olur olur (Büyüklerimiz yapmış ?)

PIC16F877, EMC konusunda sıkıntı yaşatabilen bir mcu,
Öncelikle bunu aynı pin yapısında daha güncel olan PIC18F46K22 tavsiye ederim.

24V bobinli kontaktörleri ULN 2003A ile rahatlıkla çektirebilirsiniz.

Mcu'da Analog yada Dijital Girişlerinizi kesinlikle 1 kere bakarak değerlendirmeyin, en az 8 örnek alın.

Programınız hakkında çok şey söyleyemeyeceğim ama while ın içindeki break ın ne iş yaptığını anlayamadım.
direkt break varsa while niye var ?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 05 Ağustos 2015, 15:57:12
break komutu deneme amaçlı koydum bu programın son hali değil sadece temeli diyebilirim çünkü zamanlayıcı ile random numune alma işlemini başaramazsak devreye sensör de girecek onun da verisinin işlenmesi gerekecek yani program daha karmaşık hale gelecek. önerdiğiniz pici kullanmadım ama 24 v ile röle çektirebiliosak onu kullanmayı denerim. ama hala yardımlarınıza ihtiyacım olacak çünkü endüstriyel ve profesyonel bir uygulama olacak bu.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Salih - 05 Ağustos 2015, 16:26:19
Delta plc kullanın başınız ağrımasın.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 05 Ağustos 2015, 16:27:43
pic kullanırsam karşılaşacağım sorunlar nelerdir neden plc kullanmam gerek ?

mesaj birleştirme:: 05 Ağustos 2015, 16:32:35

Picle denemeyi düşünüyorum adımları paylaşacağım sizlerle
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: RaMu - 05 Ağustos 2015, 22:41:46
Ne kadar bütçe ayrıldı bu iş için?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Erol YILMAZ - 06 Ağustos 2015, 09:50:43
138 lira 50 kuruş.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: RaMu - 06 Ağustos 2015, 09:57:11
@Allegro hocam sizden beklemezdim böyle şakalar :)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: mehmet - 06 Ağustos 2015, 11:01:41
Alıntı yapılan: Allegro - 06 Ağustos 2015, 09:50:43
138 lira 50 kuruş.
Aç- Bitir reklamindaki gibi olmuş.
"-150 olsun"
"- Yok yok.138 lira 50 kuruş. Kalıyo sonra."
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: muuzoo - 06 Ağustos 2015, 11:20:59
@eemuratozan Vereceğim linkteki yazıların oldukça faydalı olacağını sanıyorum. Tüm şemalar ve kodlar verilmiş durumda.

http://www.meliksah.edu.tr/muzam/PIC16F877A_temelli_16I16O_PICPLC.htm (http://www.meliksah.edu.tr/muzam/PIC16F877A_temelli_16I16O_PICPLC.htm)
http://www.meliksah.edu.tr/muzam/UZAM_PLC_with_PIC16F648A.htm (http://www.meliksah.edu.tr/muzam/UZAM_PLC_with_PIC16F648A.htm)
http://www.birsenyayinevi.com/store/ProductDetails.aspx?productid=85807 (http://www.birsenyayinevi.com/store/ProductDetails.aspx?productid=85807)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Salih - 06 Ağustos 2015, 19:46:49
Alıntı yapılan: eemuratozan - 05 Ağustos 2015, 16:27:43
pic kullanırsam karşılaşacağım sorunlar nelerdir neden plc kullanmam gerek ?

mesaj birleştirme:: 05 Ağustos 2015, 16:32:35

Picle denemeyi düşünüyorum adımları paylaşacağım sizlerle
Plc'ler endüstriyel ortamlara göre hazırlanmış kontrol
Cihazlarıdır.
Eğer seri üretim yapmayacaksanız, çektiğiniz eziyete ve emeğe değmez.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: mmuslubas - 07 Ağustos 2015, 00:40:52
Naçizane düşüncem bir uygulamada röle varsa pic yerine PLC kullanmanızdır. Edindiğim tecrübeler endüktif uygulamalarda pic herzaman sıkıntı yaratmıştır.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Gökhan BEKEN - 07 Ağustos 2015, 00:59:00
@mmuslubas olur mu öyle şey, PLC sanki başka bir teknoloji mi? Eğer sırf bu yüzden PLC kullanmak zorunda hissediyorsanız kendinizi, boşuna üzülmeyin PIC ile yapılabiliyor böyle şeyler. Hadi PIC olmuyor diyelim, başka marka mcu mu kalmadı piyasada?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: ipek - 07 Ağustos 2015, 01:54:13
daha evvelde bahsetmiştim yarın resimleyebilirimde,bir arkadaşım benzin pompa işleri yapıyor,pos kart okuyor pompaya aç talimatı falan veren klasik aleti imal ediyor neredeyse 10 yıldır üretiyor ,hiç bir benzin istasyonu havaya uçmadı yada saçmalamadı,işlemciler 16F877A birde RS485 ile konuşup RF-ID etiketi okuyan 16F628 IP .

ama en çok endüstriyel kartları söktüğümde içinde görmeye alışık olduğum tek çip Hitachi H8.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 11 Ağustos 2015, 10:02:36
arkadaşlarım abilerim ustalarım konuyla ilgili daha detaylı resim ve iş kapsamını kısa zamanda buraya yükleyeceğim inanıyorum ki o zaman daha güzek bir tartışma ortamı olacak...
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Salih - 11 Ağustos 2015, 12:02:10
Alıntı yapılan: Gökhan BEKEN - 07 Ağustos 2015, 00:59:00
@mmuslubas olur mu öyle şey, PLC sanki başka bir teknoloji mi? Eğer sırf bu yüzden PLC kullanmak zorunda hissediyorsanız kendinizi, boşuna üzülmeyin PIC ile yapılabiliyor böyle şeyler. Hadi PIC olmuyor diyelim, başka marka mcu mu kalmadı piyasada?

Ben kesinlikle olmaz demiyorum. PIC'le endüstriyel ortam da kontrol kartı yapmak
için, Çok emek harcamak gerekir, aynı zaman da çok tecrübe gerekir.
Daha önce söyledim seri üretim yapılacaksa harcanan emeğe ve zamana değer.
Ama tek bir uygulama için değmez.
Sitemizde PIC'le basit bir endüstriyel kontrol işi yapmaya çalışıp da
problem yaşayan ve akıbeti belli olmayan yüzlerce uygulama var.
Arkadaş işin sonun da pişman olmasın diye tavsiyede bulunuyorum.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: z - 11 Ağustos 2015, 12:11:15
Kimse üstüne alınmasın.

Bu forumda önerilecek en son şey PLC olmalı.

İşlemci kullanarak bu işin altından kalmayacağım demenin bir başka adıdır PLC kullanmak.

Gürültüye dayanıklı devre tasarımı gelişigüzel yerlere kapasitör ekleme ile falan olmaz. Kitap okuyacak ve bol bol pratik yapacaksınız.

Yaptığınız pratik uygulamanın sonucu kötü bile olsa bunu yorumlayacaksınız.

En büyük deneyimler başarısız olunmuş çalışmalardan çıkar.

PLC imalatı yapan firma çalışanlarına yahu boş ver işlemci ile devre kurmayı git şu firmanın PLC'sini al demek nasıl olurdu acaba?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Salih - 11 Ağustos 2015, 12:23:15
@z
En güzeli senin dediğin ama,
herkesin çalışma yapabilmesi için gerekli alt yapısı, gerekli cihazları ve zamanı olmayabilir.
Bu şartlar da uğraşan kişi nasıl devresini düzgün tasarlayıp iyice emin olacak ve devresine
güvenecek.

Fabrika ortamlardaki makineleri kontrol etmek çok ciddi bir iş.
Herhangi bir yanlışlık veya hatada yüz binlerce liralık maliyet çıkabilir.
Bunlardan daha önemlisi insanların sakat kalması veya ölmesine neden olunabilir.
Büro tipi cihazlar için bunlar önemli olmayabilir,
örneğin bir okul saati yaptınız en kötü ihtimal cihaz hata yaparsa
yanlış zil çalmış olur.
Ben endüstriyel ortamlarda ki makine kontrollerinin  ciddiyetine dikkat çekmek istiyorum.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: z - 11 Ağustos 2015, 14:34:20
Bu mesleğe zaman, para ve bilgi koymadan iş yapılmaz.

Sağdan soldan derme çatma şema toplayıp cihaz hiç yapılmaz.

PLC firmasında çalışan teknik personelin durumu ne acı, soru da soramazlar kimseye.

Bir tasarımcının devresi gürültüden etkileniyor ve firma dışından bir kişiye fikir danışıyor.

- Yahu yaptığım devre endüstriyel ortamda gürültüden çok etkileniyor.
-- Boşver endüstri ortamında devre kullanma PLC kullan.
- Haa tamam.



Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: sayangku - 11 Ağustos 2015, 18:51:10
Alıntı yapılan: z - 11 Ağustos 2015, 14:34:20
Bu mesleğe zaman, para ve bilgi koymadan iş yapılmaz.

Sağdan soldan derme çatma şema toplayıp cihaz hiç yapılmaz.

PLC firmasında çalışan teknik personelin durumu ne acı, soru da soramazlar kimseye.

Bir tasarımcının devresi gürültüden etkileniyor ve firma dışından bir kişiye fikir danışıyor.

- Yahu yaptığım devre endüstriyel ortamda gürültüden çok etkileniyor.
-- Boşver endüstri ortamında devre kullanma PLC kullan.
- Haa tamam.






hocam siz varya harbi tecrübe akıyosunuz dediklerinize yüzde bin katılıyorum çok şükür benim gibi düşünen birini buldum
bende plc firmasinda çalıstım adamlara o öyle değil böyle olcak de  kanıtla sen işine bak derler iki gün sonra da müşteriden gelen şikayet üzerine düzelt mantık bu Türkiye de 

mesaj birleştirme:: 12 Ağustos 2015, 09:10:09

madem öyle stm32f407 işlemcisi kullan röle sürmek içinde uln2003a yada 2004 kullan  yapablirsen  işlemci ve uln2003a  kaliteli ve
bir plc markasinin kullandıgı malzemeler z ustamın dedigi gibi bobin dir kondansatördür osilatör dür gelişi güzel koymayın
mesala işlemciye mümkün oldugunca yakın tutun osilatörü bunun gibi kurallar internet ortaminda çok var
bazen bazı şeyleri çok abartıyoruz madem bilgin yok yada meraklı değilsin meraklı olanları madem sogutmayın
işten plc röleleri sanki kontakları yapısmıyormu yapısıyor sen gider dandik röle kullanırsan seninki de daha cabuk yapısır al omron yada schneider röle seninkide en azından çıkısın biraz daha saglam olsun uln2003a entegresinde zaten darlington denilen bir sistem var her çıkısta koruma diyodu içinde var zıt emk ark olmasın diye normalde rölenin bobin girişine diyot atılır sen uln entegresini bilirsen bunu bile atmana gerek yok nebilim  işte topraktan gelicek ters gerileme karsi diyot gibi  mazemelerle devreni koruyabilirsin
ters gerilim vermeye karsi koruyabilirsin temel elektronik ve merakla bile plc yapablirsin kendince tek farklı senin yazilimin merdiven diyagrami olmaz okadar  sen biraz ugrasirsin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 12 Ağustos 2015, 09:26:49
biraz sonra video ve resimleri upload edicem daha net fikirler orataya çıkacaktır muhakkak yardımcı olmaya çalışan fikir beyan eden tüm ilgilenenlere teşekkür ediyorum...

Video :

https://www.youtube.com/watch?v=vdEIqZ7IOgo (https://www.youtube.com/watch?v=vdEIqZ7IOgo)

Resimler:


mesaj birleştirme:: 13 Ağustos 2015, 00:11:52

https://drive.google.com/file/d/0ByilAXr_z_iHa3EwZ0dtcGR5bjg/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHa3EwZ0dtcGR5bjg/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHbV9veDRWX1ZpWlk/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHbV9veDRWX1ZpWlk/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHV3JDWHY1SG5MRWc/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHV3JDWHY1SG5MRWc/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHN0hOZDBKYTNtd2c/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHN0hOZDBKYTNtd2c/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHdXJVZ1dfWGZicnM/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHdXJVZ1dfWGZicnM/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHU25vUDJ4c2RCbDQ/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHU25vUDJ4c2RCbDQ/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHZXlhMk9CUmh0bEU/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHZXlhMk9CUmh0bEU/view?usp=sharing)


Buton Fonksiyonları:

YUKARI   :   Hidrolik piston açılır ve yukarı kalkmaya başlar
AŞAĞI   :   Hidrolik piston kapanır ve aşağı inmeye başlar
İLERİ   :   Bom ileri doğru hareket eder
GERİ   :   Bom geri doğru hareket eder
SAĞ   :   Numune sondası sağa dönmeye başlar
SOL   :   Numune sondası sola dönmeye başlar
AÇ   :   Sonda içindeki helezonu döndürmeye ( numune alma işlemi ) başlar
KAPA   :   Sonda içindeki helezonu ters yönde döndürmeye ( numune kabına boşaltma ) başlar
ACİL STOP   :   Sistem Start/Stop
FAN   :   Numune boşalttıktan sonra fanı çalıştırarak helezonu temizler

* Sağ ve sola dönüşler motor ile geri kalanlar hidrolik sistemle sürülüyor.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: kayatech - 12 Ağustos 2015, 11:15:52
Alıntı yapılan: eemuratozan - 12 Ağustos 2015, 09:26:49
biraz sonra video ve resimleri upload edicem daha net fikirler orataya çıkacaktır muhakkak yardımcı olmaya çalışan fikir beyan eden tüm ilgilenenlere teşekkür ediyorum...

Video :

http://www.youtube.com/watch?v=vdEIqZ7IOgo (http://www.youtube.com/watch?v=vdEIqZ7IOgo)

Resimler:


mesaj birleştirme:: 13 Ağustos 2015, 00:11:52

https://drive.google.com/file/d/0ByilAXr_z_iHa3EwZ0dtcGR5bjg/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHa3EwZ0dtcGR5bjg/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHbV9veDRWX1ZpWlk/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHbV9veDRWX1ZpWlk/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHV3JDWHY1SG5MRWc/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHV3JDWHY1SG5MRWc/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHN0hOZDBKYTNtd2c/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHN0hOZDBKYTNtd2c/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHdXJVZ1dfWGZicnM/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHdXJVZ1dfWGZicnM/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHU25vUDJ4c2RCbDQ/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHU25vUDJ4c2RCbDQ/view?usp=sharing)
https://drive.google.com/file/d/0ByilAXr_z_iHZXlhMk9CUmh0bEU/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHZXlhMk9CUmh0bEU/view?usp=sharing)


Buton Fonksiyonları:

YUKARI   :   Hidrolik piston açılır ve yukarı kalkmaya başlar
AŞAĞI   :   Hidrolik piston kapanır ve aşağı inmeye başlar
İLERİ   :   Bom ileri doğru hareket eder
GERİ   :   Bom geri doğru hareket eder
SAĞ   :   Numune sondası sağa dönmeye başlar
SOL   :   Numune sondası sola dönmeye başlar
AÇ   :   Sonda içindeki helezonu döndürmeye ( numune alma işlemi ) başlar
KAPA   :   Sonda içindeki helezonu ters yönde döndürmeye ( numune kabına boşaltma ) başlar
ACİL STOP   :   Sistem Start/Stop
FAN   :   Numune boşalttıktan sonra fanı çalıştırarak helezonu temizler

* Sağ ve sola dönüşler motor ile geri kalanlar hidrolik sistemle sürülüyor.

Bu tarz bir iş için ben olsam "zelio" gibi akıllı role kullanırdım. Fiyatı da uygundur programlaması da.

Devreyi tasarla , yazılım yap git gel dene bir sürü vakit kabı. Hele bir de sorun çıkarsa yandınız.
Tamam kendi devrelerimizi tasarlamak güzeldir hatta bende teşvik ederim.
Ancak mühim olan önce o işi kanıtlamanız. Siz zelio ile yapın, kurun müşteri denesin.
Sorunsuz olduğuna kanaat geldiğinde zaten müşteri potansiyeli artacaktır.

Zelio ile imalata devam ederken kendi PIC devrenizi tasarlarsınız.
Hem üretiminiz durmaz hemde AR-GE için bolca vakit kazanmış olursunuz.

Bence üretimde önce sağlamlık sonra maliyet düşürümüne gidilmelidir.


Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 12 Ağustos 2015, 12:54:30
Sanırım bir yanlış anlaşılma var biz üretici firma değiliz bu gördüğünüz sistemi santralimizde kullanmak üzere satın aldık yani müşteriyiz. Ar-ge sini kendimiz yapıp bu sistemi otomatik çalıştırmak istiyoruz.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 17 Ağustos 2015, 09:23:04
Yok mu başka fikri olan arkadaşlar.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: magnetron - 17 Ağustos 2015, 13:39:27
hocam

ben imzamdaki PLC 'yi üretiyorum

bütün hatalarını çözmek uzun zaman aldı hala da bitmedi

size daha önceki arkadaşlar gibi en ucuzundan DELTA PLC alıp onunla yapmanızı tavsiye ederim

endüstriyel ortam ofis ortamından farklıdır

bir tane yapacaksınız madem zorlamayın kendinizi
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: boreas - 17 Ağustos 2015, 16:18:22
Arduino kit ve shield'i alıp deneyebilirsiniz kısmen daha iyi olabilir. Mekanik olan her parça parazit üretecektir (Kontaktör, röle vs.) Bu parazitlerden de pic ister istemez etkilenir. Diyosanız ki uğraşıp hakkıyla öğrenip kendimi geliştireceğim tabiki deneyin. Ama yok kardeşim işim çözülsün derdindeyseniz dediğim gibi arduino olur  delta ya da enda plc olur. çizim içn uğraştığınız sürede işi bitirebilirsiniz.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: muhittin_kaplan - 17 Ağustos 2015, 18:00:09
işleminiz toplam kaç hareketten oluşuyor ?
her işlemin süresi nedir ve nasıl karar veriyorsunuz ?
İşlemci Bu kararı Nasıl verecek  ?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 25 Ağustos 2015, 09:28:03
Arkadaşlar son aşamayı sizlerle paylaşıyorum ancak paylaşacağım kodlar henüz olgunlaşmamış yani bir nevi deneme kodlarıdır.

KOD:

#include <Numune Alma Sondası  3.h>
#include <stdio.h>
#include <stdlib.h>
#define LCD_ENABLE_PIN PIN_A0
#define LCD_RS_PIN PIN_A1
#define LCD_RW_PIN PIN_A2
#define LCD_DATA4 PIN_A4
#define LCD_DATA5 PIN_A5
#define LCD_DATA6 PIN_A6
#define LCD_DATA7 PIN_A7

#include <lcd.c>
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)


void main()
{
   
 
   unsigned int16 x,y,i;
   
   set_tris_a(0x00);
   set_tris_b(0x00);
   set_tris_c(0x00);
   set_tris_d(0xff);
     
   output_b(0x00);
   output_c(0x00);
   output_d(0x00);
   
   lcd_init();
     
   i=read_eeprom(0);

   while(TRUE)
   {
      //TODO: User Code
     
         if(input(pin_d7))
         {
     
         i++;
         
         write_eeprom(0,i);
     
         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune islemi\nbasliyor...");
         
         }

         delay_ms(1000);
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fYukari yonde\nkalkiyor...");
         output_high(pin_b0);
         output_high(pin_b1);
         delay_ms(1000);
         output_low(pin_b1);
         delay_ms(1000);
         output_low(pin_b0);
         }
         
         
         if(input(pin_d7))
         {
         
         y=read_eeprom(0);
         srand(y);
         
         x=rand()%1000+1;
         
       

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fSola donuyor...\n%Lu...%Lu",x,y);
         output_high(pin_b2);
         delay_ms(1000);
         output_low(pin_b2);
         }
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune aliniyor\nHelezon acik...");
         output_high(pin_b3);
         output_high(pin_b4);
         delay_ms(1000);
         output_low(pin_b4);
         output_low(pin_b3);
         }
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fYukari yonde\nkalkiyor...");
         output_high(pin_b0);
         delay_ms(1000);
         output_low(pin_b0);
         }
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fSaga donuyor...");
         output_high(pin_b5);
         delay_ms(1000);
         output_low(pin_b5);
         }
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fNumune bosaliyor\nHelezon kapali...");
         output_high(pin_b6);
         output_high(pin_b7);
         delay_ms(1000);
         output_low(pin_b7);
         delay_ms(1000);
         output_low(pin_b6);
         }
         
         if(input(pin_d7))
         {

         lcd_gotoxy(1,1);
         printf(lcd_putc,"\fFan calisiyor...\nN. Alma Bitti...");
         output_high(pin_c0);
         delay_ms(1000);
         output_low(pin_c0);
         }     
           
     
   }

}


ISIS Devresi
(http://s30.postimg.cc/4r9vjcqvl/Ads_z.jpg)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: sadogan - 25 Ağustos 2015, 11:18:13
Sistemde hiç geri dönüş yok hareket gerçekten tamamlandımı bilinmiyor, delay_ms(1000)  ler ile tamamlandığı varsayılıyor.
Bunu yaratacağı sonuçlar neler olabilir ?
Önerim hareketin bitip bitmediği fiziksel olarak kontrol edilmeli.
Her hareket beklelen zaman içerisinde tamamlanmamış ise bunu bir arıza olduğuna karar verip
gerekli işlemlerin yapılması.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 25 Ağustos 2015, 11:41:35
Öneriniz için teşekkürler evet sizin söylediklerinizi de muhakkak ki düşünüyoruz ancak ileri aşamada yapacağımız işler arasında yer alıyor sensör koymadan gerçekleştireceğimiz için bitip bitmediğini anlamak güç olacak tabi
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 19 Ekim 2015, 15:49:10
Uzun bir aradan sonra nihayet deneme aşamasına geçmeyi planlıyorum hem baskısını yapacağım devremin son hali hem de kodların son hali aşağıda mevcut her türlü görüş ve önerilere açığım:

#include <Numune Alma Sondasi Son Deneme.h>
#include <stdio.h>
#include <stdlib.h>
#define LCD_ENABLE_PIN PIN_A0
#define LCD_RS_PIN PIN_A1
#define LCD_RW_PIN PIN_A2
#define LCD_DATA4 PIN_A4
#define LCD_DATA5 PIN_A5
#define LCD_DATA6 PIN_A6
#define LCD_DATA7 PIN_A7
#include <lcd.c>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

#INT_RB
void  RB_isr(void)
{
   if(input(pin_b4))
      output_low(pin_d0);
   if(input(pin_b5))
      output_low(pin_d2);
   if(input(pin_b6))
      output_low(pin_d5);
   if(input(pin_b7))
      output_low(pin_d1);

}

   

void main()
{
   
 
   unsigned int16 x,y,i,k=1;
   
   setup_oscillator(OSC_4MHZ);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   
   set_tris_a(0x00);
   set_tris_b(0xf1);
   set_tris_c(0x00);
   set_tris_d(0x00);
     
   output_b(0x00);
   output_c(0x00);
   output_d(0x00);
   output_a(0x00);
   
   lcd_init();
     
   i=read_eeprom(0);          // srand() fonksiyonunun beslendiği seed için sürekli değişkenlik, i'nin 0 adresindeki değer okunarak hiçbir zaman başlangıç değerine dönmemesi ile sağlanıyor
   write_eeprom(1,7);         // Numune alma işleminin başlayabilmesi için ilk adımın şartı sağlanır ve 1 nolu adresteki değer başlangıçta hep 7'dir
   
   while(TRUE)
   {
   
   if(input(pin_b0))
   {
   delay_ms(20);
   while(input(pin_b0));      // Butondan el kaldırıncaya kadar bekle
   delay_ms(20);              // Buton arkı oluşmasını engellemek için 20 ms bekle
       
     
      //TODO: User Code
         
            output_high(pin_c2);             // Sisteme güç veren röle çekilir ve sistem çalışmaya hazır hale gelir
            delay_ms(1000);     
         for(k=1;k<4;k++)         
         {       
               
         if((read_eeprom(1)==7))             // Numune alma işlemi D7 girişi HIGH ve 1 nolu adres değeri 7 ise başlar
         {
     
            i++;                                            // srand() fonksiyonunun seed'i i sürekli 1 artırılarak değiştirilir
         
            write_eeprom(0,i);                              // Değişen i değeri sonraki işlemlerde rand() fonksiyonunun aynı sayıları tekrarlamaması için 0 nolu adrese kaydedilir
     
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune islemi\nbasliyor...");// Numune alma işleminin başladığı LCD ekranına yazdırılır
            delay_ms(1000);
           
            write_eeprom(1,0);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 0 yazdırılır
         
         }         
         
         if((read_eeprom(1)==0))             // Bom, D7 girişi HIGH ve 1 nolu adres değeri 0 ise yukarı kalkmaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fYukari yonde\nkalkiyor..."); // Bomun yukarı kalktığı LCD ekranına yazdırılır
            output_high(pin_d0);                            // Bomu yukarı kaldıran röle enerjilenir ve bom yukarı kalkmaya başlar
            output_high(pin_d1);                            // Bomu uzatan röle enerjilenir
            delay_ms(1000);                                 // Bomun ne kadar süre uzayacağı belirlenir
            output_low(pin_d1);                             // Bomu uzatan röle pasif hale getirilir ve uzama durur
            delay_ms(1000);                                 // Bom uzamasına artı olarak yukarı kalkma süresi burada belirlenir
            output_low(pin_d0);                             // Bomu yukarı kaldıran röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,1);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 1 yazdırırlır
         }         
         
         if((read_eeprom(1)==1))             // Bom, D7 girişi HIGH ve 1 nolu adres değeri 1 ise sola dönmeye hazırdır
         {
         
            y=read_eeprom(0);                               // 0 adresindeki i değeri okunup y'ye atanır
            srand(y);                                       // srand() fonksiyonunun seed'i y olarak belirlenir
            if(k==1)
            x=rand()%500+2000;                           
            if(k==2)
            x=rand()%2500+2500;
            if(k==3)         
            x=rand()%5000+2500;

       
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fSola donuyor...\n%Lu...%Lu",x,y);     // Bomun sola döndüğü LCD ekranına yazdırılır
            output_high(pin_d2);                            // Bomun sola dönüşünü sağlayan röle enerjilenir ve bom sola dönmeye başlar
            delay_ms(x);                                    // Bom random olarak belirlenen x süre kadar sola döner
            output_low(pin_d2);                             // Bomun sola dönüşünü sağlayan röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,2);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 2 yazdırırlır
         }
         
         if((read_eeprom(1)==2))             // Numune alma işlemi ve helezonun çalışması, D7 girişi HIGH ve 1 nolu adres değeri 2 ise hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune aliniyor\nHelezon acik...");   // Numune alındığı LCD ekrana yazdırırlır
            output_high(pin_d3);                            // Bomu aşağı hareket ettiren röle enerjilenir ve bom kamyon kasasına girmeye başlar
            output_high(pin_d4);                            // Helezonu çalıştıran röle enerjilenir ve helezon dönmeye başlar. Bu sayede kömür alma işlemi gerçekleşir
            delay_ms(1000);                                 // Numune alma işlemi belirlenen süre kadar sürer. Bu süre kamyon kasasının dibine ulaşılan süredir
            output_low(pin_d4);                             // Bomu aşağı indiren röle enerjisi kesilir ve bom durur
            output_low(pin_d3);                             // Helezonu çalıştıran röle enerjisi kesilir ve kömür alma işlemi biter
           
            write_eeprom(1,3);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 3 yazdırırlır
         }
         
         if((read_eeprom(1)==3))             // Bom, D7 girişi HIGH ve 1 nolu adres değeri 3 ise yukarı kalkmaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fYukari yonde\nkalkiyor...");          // Bomun yukarı kalktığı LCD ekranına yazdırılır
            output_high(pin_d0);                            // Bomu yukarı kaldıran röle enerjilenir ve bom yukarı kalkmaya başlar
            delay_ms(1000);                                 // Bom belirlenen süre kadar yukarı kalkar. Bu süre max bom yükekliği kadardır
            output_low(pin_d0);                             // Bomu yukarı kaldıran röle enerjisi kesilir ve yukarı kalkma işlemi durur
           
            write_eeprom(1,4);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 4 yazdırırlır
         }
         
         if((read_eeprom(1)==4))             // Bom, D7 girişi HIGH ve 1 nolu adres değeri 4 ise sağa dönmeye hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fSaga donuyor...\n%Lu...%Lu",x,y);     // Bomun sağa döndüğü LCd ekrana yazdırılır
            output_high(pin_d5);                            // Bomu sağa döndüren röle enerjilenir ve bom sağa döner
            delay_ms(x);                                    // Bom belirlenen süre kadar sağa döner. Bu süre max sağ konumu kadardır
            output_low(pin_d5);                             // Bomu sağa döndüren röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,5);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 5 yazdırırlır
         }
         
         if((read_eeprom(1)==5))             // Numune boşaltma ve helezonun ters yönde dönme işlemi, D7 girişi HIGH ve 1 nolu adres değeri 5 ise başlamaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune bosaliyor\nHelezon kapali...");   // Numune kömürün boşaltıldığı LCD ekrana yazdırılır
            output_high(pin_d3);                            // Bomu aşağı hareket ettiren röle enerjilenir ve bom aşağı hareket eder
            delay_ms(1000);                                 // Bom belirlenen süre kadar aşağı iner. Bu süre min yükeklik kadardır
            output_low(pin_d3);                             // Bomu aşağı hareket ettiren röle enerjisi kesilir ve bom durur
            output_high(pin_c0);                            // Kömürü boşaltan röle enerjilenir ve helezon ters yönde dönmeye başlar
            delay_ms(1000);                                 // Kömür belirlenen süre içerisinde boşalır
            output_low(pin_c0);                             // Kömürü boşaltan röle enerjisi kesilir ve helezon durur
           
           
            write_eeprom(1,6);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 6 yazdırırlır
         }
         
         if((read_eeprom(1)==6))             // Helezon temizleme fanı, D7 girişi HIGH ve 1 nolu adres değeri 6 ise çalışmaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fFan calisiyor...\nN. Alma Bitti...");    // Fanın çalıştırıldığı LCd ekrana yazdırılır
            output_high(pin_c1);                            // Fanı çalıştıran röle enerjilenir ve fan çalışmaya başlar
            delay_ms(1000);                                 // Fan belirlenen süre kadar çalışır
            output_low(pin_c1);                             // Fanı çalıştıran röle enerjisi kesilir ve fan durur
           
            write_eeprom(1,7);                              // Başlangıç koşulunun sağlanması için 1 nolu adres değeri tekrar 7 yapılır
           
         }
         }         
         
      }
   }         
           

}


Yapmak İstediğim:
(http://s16.postimg.cc/e1iq86wk5/Ads_z.jpg)

Basacağım Devre:
(http://s13.postimg.cc/rrg40ehpz/Ads_z1.jpg)

(http://s15.postimg.cc/9lwmrjne3/Ads_z2.jpg)

(http://s1.postimg.cc/wtw1cczu7/Ads_z4.jpg)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 26 Ekim 2015, 14:17:38
Arkadaşlar biraz ters de olsa basmış olduğum baskı devre ve kodları yani son durum aşağıdadır:

https://youtu.be/u-asTUTh1W8 (https://youtu.be/u-asTUTh1W8)

#include <Numune Alma Sondasi Son Deneme.h>
#include <stdio.h>
#include <stdlib.h>
#define LCD_ENABLE_PIN PIN_A0
#define LCD_RS_PIN PIN_A1
#define LCD_RW_PIN PIN_A2
#define LCD_DATA4 PIN_A4
#define LCD_DATA5 PIN_A5
#define LCD_DATA6 PIN_A6
#define LCD_DATA7 PIN_A7
#include <lcd.c>
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)

#INT_RB
void  RB_isr(void)
{
   if(input(pin_b4))
      output_low(pin_d0);     // Yukarı sonlandırma anahtarı
   if(input(pin_b5))
      output_low(pin_d2);     // Sol sonlandırma anahtarı
   if(input(pin_b6))
      output_low(pin_d5);     // Sağ sonlandırma anahtarı
   if(input(pin_b7))
      output_low(pin_d1);     // BOŞ

}

   

void main()
{
   
 
   unsigned int16 a,x,y,i,k=1;
   
   setup_oscillator(OSC_4MHZ);      // Dahili osilatör frekansı 4 MHz
   enable_interrupts(INT_RB);       //
   enable_interrupts(GLOBAL);       // Kesmelere izin ver
   
   set_tris_a(0x00);    // Tüm A Portu çıkış
   set_tris_b(0xf1);    // B4,B5,B6,B7 ve B0 pinleri giriş
   set_tris_c(0x00);    // Tüm C Portu çıkış
   set_tris_d(0x00);    // Tüm D Portu çıkış
     
   output_b(0x00);      // Bşalangıçta tüm pin değerleri 0
   output_c(0x00);      //
   output_d(0x00);      //
   output_a(0x00);      //
   
   lcd_init();
     
   i=read_eeprom(0);          // srand() fonksiyonunun beslendiği seed için sürekli değişkenlik, i'nin 0 adresindeki değer okunarak hiçbir zaman başlangıç değerine dönmemesi ile sağlanıyor
   write_eeprom(1,7);         // Numune alma işleminin başlayabilmesi için ilk adımın şartı sağlanır ve 1 nolu adresteki değer başlangıçta hep 7'dir
   
   while(TRUE)
   {
   
   if(input(pin_b0))          // Butona basılır ise
   {
   
      delay_ms(20);
      while(input(pin_b0));      // Butondan el kaldırıncaya kadar bekle
      delay_ms(20);              // Buton arkı oluşmasını engellemek için 20 ms bekle       
     
         
      output_high(pin_c2);       // Sisteme güç veren röle çekilir ve sistem çalışmaya hazır hale gelir
      delay_ms(1000);   
           
         for(k=1;k<4;k++)         
         {       
               
         if((read_eeprom(1)==7))             // Numune alma işlemi 1 nolu adres değeri 7 ise başlar
         {
     
            i++;                                            // srand() fonksiyonunun seed'i i sürekli 1 artırılarak değiştirilir
         
            write_eeprom(0,i);                              // Değişen i değeri sonraki işlemlerde rand() fonksiyonunun aynı sayıları tekrarlamaması için 0 nolu adrese kaydedilir
     
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune islemi\nbasliyor...");// Numune alma işleminin başladığı LCD ekranına yazdırılır
            delay_ms(1000);
           
            write_eeprom(1,0);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 0 yazdırılır
         
         }         
         
         if((read_eeprom(1)==0))             // Bom, 1 nolu adres değeri 0 ise yukarı kalkmaya hazırdır
         {
         
            y=read_eeprom(0);                               // 0 adresindeki i değeri okunup y'ye atanır
            srand(y);                                       // srand() fonksiyonunun seed'i y olarak belirlenir
            a=rand()%1000+500;                              // Bomun ne kadar süre uzayacağı belirlenir
           
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fYukari kalkiyor...\n%Lu...%Lu",a,y); // Bomun yukarı kalktığı LCD ekranına yazdırılır
            delay_ms(20);
            output_high(pin_d0);                            // Bomu yukarı kaldıran röle enerjilenir ve bom yukarı kalkmaya başlar
            delay_ms(20);                                   // İki işlem arası karışıklık önelemek için 20 ms gecikme yeterli görülmüştür
            output_high(pin_d1);                            // Bomu uzatan röle enerjilenir
            delay_ms(a);                                    // Belirlenen süre kadar bom uzar
            output_low(pin_d1);                             // Bomu uzatan röle pasif hale getirilir ve uzama durur
            delay_ms(1000);                                 // Bom uzamasına artı olarak yukarı kalkma süresi burada belirlenir
            output_low(pin_d0);                             // Bomu yukarı kaldıran röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,1);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 1 yazdırırlır
         }         
         
         if((read_eeprom(1)==1))             // Bom, 1 nolu adres değeri 1 ise sola dönmeye hazırdır
         {
         
            y=read_eeprom(0);                               // 0 adresindeki i değeri okunup y'ye atanır
            srand(y);                                       // srand() fonksiyonunun seed'i y olarak belirlenir
            if(k==1)
            x=rand()%500+2000;                              // Her sola dönüş için farklı bir süre üretilir
            if(k==2)
            x=rand()%2500+2500;                             // "  "  "  "  "  "  "  "  "  "  "  "  "  "  "
            if(k==3)
            x=rand()%5000+2500;                             // "  "  "  "  "  "  "  "  "  "  "  "  "  "  "
       
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fSola donuyor...\n%Lu...%Lu",x,y);     // Bomun sola döndüğü LCD ekranına yazdırılır
            delay_ms(20);
            output_high(pin_d2);                            // Bomun sola dönüşünü sağlayan röle enerjilenir ve bom sola dönmeye başlar
            delay_ms(x);                                    // Bom random olarak belirlenen x süre kadar sola döner
            output_low(pin_d2);                             // Bomun sola dönüşünü sağlayan röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,2);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 2 yazdırırlır
         }
         
         if((read_eeprom(1)==2))             // Numune alma işlemi ve helezonun çalışması, 1 nolu adres değeri 2 ise hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune aliniyor\nHelezon acik...");   // Numune alındığı LCD ekrana yazdırırlır
            delay_ms(20);
            output_high(pin_d3);                            // Bomu aşağı hareket ettiren röle enerjilenir ve bom kamyon kasasına girmeye başlar
            delay_ms(20);
            output_high(pin_d4);                            // Helezonu çalıştıran röle enerjilenir ve helezon dönmeye başlar. Bu sayede kömür alma işlemi gerçekleşir
            delay_ms(1000);                                 // Numune alma işlemi belirlenen süre kadar sürer. Bu süre kamyon kasasının dibine ulaşılan süredir
            output_low(pin_d4);                             // Bomu aşağı indiren röle enerjisi kesilir ve bom durur
            delay_ms(20);
            output_low(pin_d3);                             // Helezonu çalıştıran röle enerjisi kesilir ve kömür alma işlemi biter
           
            write_eeprom(1,3);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 3 yazdırırlır
         }
         
         if((read_eeprom(1)==3))             // Bom, 1 nolu adres değeri 3 ise yukarı kalkmaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fYukari yonde\nkalkiyor...");          // Bomun yukarı kalktığı LCD ekranına yazdırılır
            delay_ms(20);
            output_high(pin_d0);                            // Bomu yukarı kaldıran röle enerjilenir ve bom yukarı kalkmaya başlar
            delay_ms(1000);                                 // Bom belirlenen süre kadar yukarı kalkar. Bu süre max bom yükekliği kadardır
            output_low(pin_d0);                             // Bomu yukarı kaldıran röle enerjisi kesilir ve yukarı kalkma işlemi durur
           
            write_eeprom(1,4);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 4 yazdırırlır
         }
         
         if((read_eeprom(1)==4))             // Bom, 1 nolu adres değeri 4 ise sağa dönmeye hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fSaga donuyor...\n%Lu...%Lu",x,y);     // Bomun sağa döndüğü LCd ekrana yazdırılır
            delay_ms(20);
            output_high(pin_d5);                            // Bomu sağa döndüren röle enerjilenir ve bom sağa döner
            delay_ms(x);                                    // Bom belirlenen süre kadar sağa döner. Bu süre max sağ konumu kadardır
            output_low(pin_d5);                             // Bomu sağa döndüren röle enerjisi kesilir ve bom durur
           
            write_eeprom(1,5);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 5 yazdırırlır
         }
         
         if((read_eeprom(1)==5))             // Numune boşaltma ve helezonun ters yönde dönme işlemi, 1 nolu adres değeri 5 ise başlamaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fNumune bosaliyor\n%Lu...%Lu",a,y);   // Numune kömürün boşaltıldığı LCD ekrana yazdırılır
            delay_ms(20);
            output_high(pin_d3);                            // Bomu aşağı hareket ettiren röle enerjilenir ve bom aşağı hareket eder
            delay_ms(20);
            output_high(pin_d6);                            // İleri uzayan bom, uzadığı süre kadar kısalmaya başlar
            delay_ms(a);                                    // Belirlenen süre kadar bom geriler
            output_low(pin_d6);                             // Uzama durur
            delay_ms(1000);                                 // Bom belirlenen süre kadar aşağı iner. Bu süre min yükeklik kadardır
            output_low(pin_d3);                             // Bomu aşağı hareket ettiren röle enerjisi kesilir ve bom durur
            delay_ms(20);
            output_high(pin_c0);                            // Kömürü boşaltan röle enerjilenir ve helezon ters yönde dönmeye başlar
            delay_ms(1000);                                 // Kömür belirlenen süre içerisinde boşalır
            output_low(pin_c0);                             // Kömürü boşaltan röle enerjisi kesilir ve helezon durur
           
           
            write_eeprom(1,6);                              // Yarıda kalan bir işlem olduğunda programın nerede kaldığını bilmesi için 1 nolu adrese sonraki işlemin etiketi olan 6 yazdırırlır
         }
         
         if((read_eeprom(1)==6))             // Helezon temizleme fanı, 1 nolu adres değeri 6 ise çalışmaya hazırdır
         {

            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fFan calisiyor...\nN. Alma Bitti...");    // Fanın çalıştırıldığı LCd ekrana yazdırılır
            delay_ms(20);
            output_high(pin_c1);                            // Fanı çalıştıran röle enerjilenir ve fan çalışmaya başlar
            delay_ms(1000);                                 // Fan belirlenen süre kadar çalışır
            output_low(pin_c1);                             // Fanı çalıştıran röle enerjisi kesilir ve fan durur
           
            write_eeprom(1,7);                              // Başlangıç koşulunun sağlanması için 1 nolu adres değeri tekrar 7 yapılır
           
         }
         }       
      }
   }     
}
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: malitronık - 27 Ekim 2015, 16:21:40
elektronik bilgisi olan için pic ile  kararlı calışır mcu etkilenemesi için  her turlu elektronik malzeme var  optucoper bobin condastor niye olmasın :)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: OG - 28 Ekim 2015, 05:19:33
Konuyu yeni gördüm videoyu izledim.

Bu makinenin, kömürü alma ve verme süresi (helezon dediğiniz bu olsa gerek) dışındaki her haraket operatöre bağlı gibi, yani görerek manuel kontrolle olmak zorunda sanıyorum.

Kanımca haraketlerin LCD li devreye yazıp gösterilmesi yanlızca operatorun kafasını karıştırır, dikkatini makineden başka tarafa çevirmemeli. İşin mühendisliğinin içinde bu konu daha öncelikli.

Helezon için de gereken bir time kontrolu yeterli. Bu süre bir kereliğine mahsus, bir pot ile manuel ayarlanıp bir buton ile veya kutu içinde (sonradan müdahale olmasın diye) bir jumper ile hafızaya alınır. Ancak bu haraketi de STOP yapması gereken acil butonu olması gerekir. Ve belki gerekiyorsa diğer haraketlere geçildi ise helezona kesme atması gerekir.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 28 Ekim 2015, 09:48:43
OG hocam bu devreyi dikkate almadığınızda daha önce yüklediğim videoda şu an nasıl çalıştığı ve kontrol kumandasında hangi tuşların olduğu ve ne iş yaptığı var. Ben bu devre ile tek tuşla tüm işlemleri sondanın kendisinin yapmasını sağlıyorum emniyet tuşu ayrı olacak onu bu devreye koymadım. LCD'deki hızlı geçişler henüz devreyi sistemle beraber denemediğim için.Çünkü sistemin zaten ne kadar süre sola döneceği ne kadar süre helezonu çalıştıracağı belli o süreleri kodlamada girdiken sonra sorun kalmayacak. Zaten kalan emniyet tedbirleri arasında sonlandırma anahtarları mevcut ki bunlar kesme ile programın akışına bağlı. Sonuç olarak operatör burada sadece başla butonuna basacak yani herhangi birşeyi takip etmesi gerekmiyor. Aklınızda kalan başka sorular ve fikirler varsa lütfen paylaşın. İlginiz içinse teşekkür ediyorum.
Başlık: Ynt: PIC18F46K22 İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 09 Aralık 2015, 10:04:18
Arkadaşlar Projenin Son halini paylaşıyorum. youtube la ilgili problem yaşadığım için drive linki vericem. Değerli dönüşlerinizi bekliyorum.

https://drive.google.com/file/d/0ByilAXr_z_iHWTVSeFBRZnV4ZG8/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHWTVSeFBRZnV4ZG8/view?usp=sharing)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 29 Ocak 2016, 09:31:29
Arkadaşlar yeniden merhaba amatör olarak başlamış olduğum bu pic ile röle sürme işinde gördüm ki çok fazla eksiğim var ve yapmış olduğum devre parazitlerden oldukça fazla etkilendi bu konu başlığı altında devrenin eski hali mevcut ancak ben şimdi çözüm olarak düşündüğüm eklemeler ve düzeltmeler ile yeni halini koyuyorum. Benimle önerilerinizi paylaşmanızı rica ediyorum.
https://drive.google.com/file/d/0ByilAXr_z_iHVXBzdkUyOU1kQUU/view?usp=sharing (https://drive.google.com/file/d/0ByilAXr_z_iHVXBzdkUyOU1kQUU/view?usp=sharing)
bağlantıyı görüntüleyemeyen olur ise lütfen bana bildirsin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: Erol YILMAZ - 29 Ocak 2016, 11:40:16
Mcu'nun bir girişi bir kere okuyarak karar vermesini sağlamak,
her türlü yanlışa ve hataya davetiye çıkartacaktır.

Misal 16 kere okunmalı ve min 14 kez lojik 1 var ise burası lojik 1'dir denmeli,

Dijital girişte olduğu gibi analog giriş te aynı şekilde çok defa okunup ortalaması alınarak üretilen parazit-vari şeylerin etkisi azaltılabilir.
Bu en basit filtreleme şekli olmasına rağmen ama birçok yerde işe yarar.

Tüm girişlerden kesinkes emin olduktan sonra program yazılabilir,
Yoksa herşeyi sorgular bir türlü sonuca ulaşamazsınız.
Siz tek tek ölçerken doğru gibi görünebilir.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 29 Ocak 2016, 14:00:42
Peki çizimini yaptığım devre için öneriniz nedir allegro hocam ?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 29 Ocak 2016, 17:03:57
hocam o rolelerin beslemesini hatta disardan gelen sensorlerin beslemelerini ayırırsan rahat edersin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 29 Ocak 2016, 19:07:33
dursuncemal hocam röle ve sensör girişlerinin beslemesini ayırdım 24 v ile besleniyorlar çizimde 24 v un toprağı gnd2 olarak adandırılmış durumda ayırmış durumdayım ama tabi devreyi daha basmadım basmadan önce önerilerinizi almak istedim.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 29 Ocak 2016, 19:52:48
pic beslemesinin  + ve - sinden topraga 4.7 nf x2 kondanstor un buyuk faydasi olacaktir.reseti  direk + vermiyor isen 5v bir tranzorp yada zener  atarsan iyi olur.aklima gelenler bunlar
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: EFESU - 29 Ocak 2016, 22:41:37
Konuyu  geç  okudum ama sonuç olarak  şunu  diyebilrim
PIC  le bu  olur . Sadece çalışma  ortamına  göre vereceği tepkiler
farklı  olur

Dikkat edilmesi gerekenler
giriş çıkışlar optokuplor  ile olmalı
münkünse  iki  adet lm2576 kullanıp bi tanesi sadece  PIC i
Diğeri 24  volt grubunu  beslesin
topraklma ve şase olayına dikkat edilmeli
başka da çok bişey yok yazılım önemli tabi
role bobin gibi devre elemanları  muthiş parazit
üretir..ters diyot  kondansator  gibi
elemanları  kullanmaktan kaçınma
yani tasarım  biraz   önemli

kolay gelsin  basıc yada proton  olsaydı
ve devre  şemasını  koysaydınız
daha fazla  yardımcı  olmaya çalışırdık ..
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 00:12:30
eger projen ciddi ise en iyisini yaptin.ben bundan sonra ciddi projelerde dc dc converter kullanma karai aldim en azindan kafam rahat.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 10:06:02
Devre şeması ve ares çizimi aşağıdadır. Röleler ayrı bir kartta olacağından kontaklar arası kapasitörler bu şemada yoktur sadece bobin uçlarına ters diyot bu şemada yer alıyor yine bu sitede gördüğüm bir teknikle 24 v ve 5 v beslemenin toprakları tamamen ayrı ortak şaseye kapasitör ile bağlılar:

(http://s18.postimg.cc/k3fxjf5p5/Ads_z.jpg)

(http://s11.postimg.cc/kd5uo3uw3/Adszz_z.jpg)

(http://s24.postimg.cc/czqf1cb85/Adaas_z.jpg)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 11:30:52
ortak sase de ne ola araya opto koymalisin yoksa beslemeleri o turlu ayırmanın cok bır anlami olmz eger butonun disarda ise onuda izole edersen rahat edersin yoksa pcb yi son bir kere daha cizme ihtiyacin dogar.rolelerdeki kondanstorler dioda paralel olmali ama saseleri ayirirsan cok da gerek yok kondanstore sadece diot yeter aslinda dioda da gerek yok cunki ulnnin icinde koruma diodu var.isinciddi ise saseleri tam ayir opto kullan
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 11:35:43
uzun süredir araştırıyorum optolar da bi süre sonra parazitlere çare olamıyormuş. ve toprakların kondansatörlerle ayrıldığını yine bu sitede gördüm işte konu başlığı:

https://www.picproje.org/index.php?topic=49997.0 (https://www.picproje.org/index.php?topic=49997.0)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 13:58:49
oradaki soru grond plane yi topraga ne sekilde veriyim.sımdi senin beslemelerin smps ise zaten topraga kapasitor ile bagli trafo kullanacak isen benim onerim 4.7 nf x2 kondanstoru hem + dan hem - den topraga ver her iki beslemedende
beslemelerin - leri ayri diilse care olmayabilir ana genede faydasi olur.zaten beslemeleri ayirdiktan sonra mecbursun opto kullanmaya suremesinki rolelerini.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 14:05:20
5v için hazır bir regülatör entegresi kullanıyorum 24 volt için de ayrı bi kaynak kullanmayı düşünüyorum bu şekilde 2 toprak ayrı olacak ya yine opto kullanmak zorunda mıyım peki ?
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 14:16:57
iki ayri - olacak toprak diil toprak ayri biliyorsun evet isin ciddi ise kullanmalisin 5v - si ile 24 un - sini aslabirlestirme cok rahat edersin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 14:19:55
önceki bastığım devrede - ler birleşikti evet çok sorun yaşadım röleler çalışıodu ama kontaktan 220 akıtınca pic sersemliodu. şimdi 5v ve 24 - leri ayırdım bu devrede o zaman ortak şase olarak düşündüğüm şeyi iptal edeyim sadece 2 beslemenin de eksileri ayrı olsun yeterlidir umarım. Eğer yine sorun yaşarsam optoları tam olarak nereye yerleştirmeliyim? bir de toprak ayırdan kastınız nedir bilmediğimden soruyorum anlatabilir misiniz
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 14:25:56
sebekenden gelen 3 uc yada topraga gomulen iletkenden alinan uc.optolri nereye yerlestirirsen yerlestir sorun yok.optolerin ledlerini  5v tarafindan picten sureceksin.cikisları ile 24 volt tarafindan  ulnleri veya transistorlerini sureceksin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 14:27:07
tmmdır o zaman eğer bu basacağım devre işe yaramazsa optoları koyup deneyeceğim bakalım.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 14:33:40
sen bilirsin ama isini sansa brakma derim ben yaparsin masanın ustunde calisir sahaya gidince moralin bozulmasin
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: kudretuzuner - 30 Ocak 2016, 14:34:31
Merhaba,
Profesyoneller ve ustalar bildikleri tüm teknik ayrıntıları anlattılar.Bir amatör olarak fikrim,akla gelmeyen,şeytanın gizli olduğu özelliklerden bahsetmek  istiyorum.Optoizolatör olmadan sanayi tipi projelerde PIC kesinlikle etkilenecektir.Hatta tasarlayacağınız devre de bile PIC'in konumu,optoizolatörlerin konumu hatta plaketi muhafaza eden kutunun bile olumsuz hava şartlarının etkisini azaltacak şekilde(sızdırmazlık,manyetik alanlardan etkilenmeyecek şekilde )dizayn edilmelidir.Baskı plaket kalitesi(FR4) yolların kalınlığı ve de temizliği dikkat edilmesi gereken hususlardır.Ayrıca elle yapılacak bir proje olduğu için ve de yer sorunu olmadığı için fiziksel boyutu açısından DIP kılıf kullanmanız size kolaylık sağlayacaktır.Olası bir PIC arızasında soketinden çıkarılacak arızalı PIC'i çok çok kısa bir zamanda değiştirebilirsiniz.Kolay gelsin.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: dursuncemal - 30 Ocak 2016, 14:38:14
kudretuzuner < agizina saglik
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: eemuratozan - 30 Ocak 2016, 14:55:52
teşekkürler o zaman dediklerinizi dikkate alıcam.
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: kudretuzuner - 30 Ocak 2016, 15:00:11
Alıntı yapılan: eemuratozan - 30 Ocak 2016, 14:55:52
teşekkürler o zaman dediklerinizi dikkate alıcam.
Merhaba,
Teşekkürler,o zaman kaliteli bir kutu arayışından başlayın. :)
Başlık: Ynt: PIC16F877A İle Endüstriyel Uygulama Denemesi
Gönderen: EFESU - 30 Ocak 2016, 15:29:23
optoların diğer tarafı ayrı besleme ve gnd  olursa hiç sorun  olmuyor
led  olan tarafı kendi kendi şasesine diğer tarafı ayrı şaseye gidecek o zman
yalıtılmış  oluyor