12F675 ile Adc kontrollü pozisyoner.

Başlatan onurinci, 17 Mart 2017, 22:32:43

onurinci

hocam selam..
sizinde yardımınızla bir pozisyoner yapmıştım,Ankara ivedik'te bulduğum bir mekaniğe hükmediyordum,fakat limit switclerin bir tarafındaki özel yay fırlayıp gitmiş..

acaba yazılımda nasıl alt limit üst limit koyabilirim ?


https://youtu.be/3H4kkBQS8zw

@ Device PIC12F675,WDT_OFF,PWRT_ON,PROTECT_OFF, CPD_OFF,MCLR_OFF,BOD_OFF,INTRC_OSC_NOCLKOUTDEFINE OSC 4DEFINE OSCCAL_1K 1 TRISIO= %00000011 : GPIO= 0 CMCON= 7 : ANSEL= %00010011 : ADCON0= %10000000 : WPU= 0DEFINE ADC_BITS 10    ' ADCIN resolution  (Bits)'DEFINE ADC_CLOCK 1    ' ADC clock source  (Fosc/8)DEFINE ADC_SAMPLEUS 10 ' ADC sampling time (uSec)HAMK VAR WORD 60HAMM VAR WORD 62SYMBOL MOTORSAG= GPIO.4SYMBOL MOTORSOL= GPIO.5      GOSUB ADCAL      PAUSE 200Start:       GOSUB adcal  WHILE HAMK >HAMMMOTORSAG= 1      GOSUB ADCAL  WEND  WHILE HAMK<HAMMMOTORSOL= 1      GOSUB ADCAL  WEND                IF HAMK= HAMM THEN gosub fren      GOTO Start                     FREN:motorsag= 1motorsol= 1      PAUSE 500MOTORSOL= 0MOTORSAG= 0      RETURN                  ADCAL:      ADCIN 0,HAMM      ADCIN 1,HAMK      RETURN

ete

Yazılım hiç bir yerden referans almıyor. Bu nedenle herhangi bir kısıtlama koyabileceğini sanmıyorum. Yazılımın tek yaptığı sağa dön, sola dön yada dur emrini vermek. Bu nedenle bana kalırsa mekanik çözüm bulmak zorundasın. Vida dişi üzerinde kayan bir parça var en güzeli onun ulaştığı son noktalarda birer mikro-switch'e basarak motoru durdurmasıdır. Onuda nasıl yapacağını tarif etmeyeyim artık.

İllaki bir yazılım çözümü bulayım diyorsan en güzeli kayan parçanın bir taraftan diğer tarafa gidiş süresini bir kereliğine ölçmek. Bunu toplam kayma süresi olarak kayıt etmek.
Bir yön değişkeni kullanarak her yön için bu süreyi belirlemek ve her start+Dur komutları aralığında süreyi timer ile ölçmek. aynı yönde gidişleri toplamak ve belirlenen maksimum süreye ulaşınca daha fazla gidemezsin deyip gidişi bloklamak şeklinde bir çözüm üretilebilir. Başkada bir şey yapılabileceğini sanmıyorum.

Ete 

onurinci

 If HAMM  > 97 And HAMM < 107 Then Gosub Fren    gibi uğraştım netice vermedi..

alt limit yaklaşıık 25 'de bitiyor üst limitte 1000 civarında bitiyor,switch fikri aklıma geldi ,oralara fiber braket ile monteledim, fakat bobinde 100Watt 2....30 MHz RF güç var ,gücü verdiğim anda oraya uzanan kablolar sistemi blok ediyor,biraz daha uğraşayım,bunu yazılımda halletmem lazım.
.
hocam bir sorum daha olacak ADC10 bit ilgili AD pinine 1 volt geliyor bunu nasıl formüle ederim,yani 1volt 25'tir gibi...

ete

Maksimum 1 volt geliyor galiba. 1 volt karşılığı adc değerin ;
1x1023/5=204 olacaktır. 25/204=0,12254902. Bunuda 256 ile çarparsak 31,37 elde edilir.
Bu sabit çrpanın olacak ama 3138 olarak kullanıp sonucu 100 e böleceğiz.
Hemen bakalım, (204x3138)/256 =640152/100=25 olarak hesaplanır sonuç doğru demektir.
Bu durumda formül. Volt=(Ham*/3138)/100 şeklinde kullanılacaktır.

Ete

onurinci

teşekkürler hocam,bu formülü öğrendiğim iyi oldu..

Powered by EzPortal