コード例 #1
0
def feedback_Ramp(desiredValue):
	pid = PID()
	ser2 = serial.Serial("/dev/ttyUSB0", 115200) #ser2 for consistency
	count2 = 0
	currentcount2 = 0
	desiredcount2 = 33
#	prevcount2 = 0
	initialcount2 = 0	
	pid.SetKp(1.1)
	pid.SetDesired(desiredValue)
	while True:
		delta2 = encoder2.get_delta()
		if delta2 != 0:
			count2 = count2 + delta2
			currentcount2 = count2
			print ('{:15}{count}'.format('enc count2', count = count2))
			if abs(currentcount2-initialcount2) > desiredcount2:
				print ('Reached end, exiting count function')
				currentcount2 = 0
				break
コード例 #2
0
def feedback_Turn(desiredValue):
	pid = PID()
	ser2 = serial.Serial("/dev/ttyUSB0", 115200) #ser2 for consistency
	count1 = 0
	currentcount1 = 0
	desiredcount1 = 33
#	prevcount1 = 0
	initialcount1 = 0
	pid.SetKp(1.1)
	pid.SetDesired(desiredValue)
		while True:
		delta1 = encoder1.get_delta()
		if delta1 != 0:
			count1 = count1 + delta1
			currentcount1 = count1
			error = pid.desired-abs(currentcount1)
			if abs(currentcount1-initialcount1) > desiredcount1:
				print ('{:15}{count}'.format('enc count1', count = count1))
				print ('Reached end, exiting count function')
				currentcount1 = 0
				break
コード例 #3
0
            #Command PTU to point at sun
            ptu.ephem_point(ep, imu=imu, target='sun', init=False)
        if ptu_offset_mode == 2:
            #Command PTU to point at moon
            ptu.ephem_point(ep, imu=imu, target='moon', init=False)

    else:
        track_mode = default_track_mode
        filter_mode = default_filter_mode
        ptu_offset_mode = default_ptu_offset_mode

    #Initiate PID control loop
    pid_x = PID(
        step_size=params.ptu_step_size
    )  #'eighth'    #pid_x will control azimuth ptu motor (assuming orientation of ss is correct)
    pid_x.SetKp(kp_x)
    pid_x.SetKi(ki_x)
    pid_x.SetKd(kd_x)

    pid_y = PID(
        step_size=params.ptu_step_size
    )  #pid_y will control azimuth ptu motor (assuming orientation of ss is correct)
    pid_y.SetKp(kp_y)
    pid_y.SetKi(ki_y)
    pid_y.SetKd(kd_y)

    #Set ptu=None if not using tracking to ensure PTU is not moved after initial offset
    if track_mode == 4:
        ptu.ptu.close()
        ptu = None
        print('Not tracking, so disconnecting from the PTU for safe measure')
コード例 #4
0
    #Define Modes
    track_mode = params.track_mode  #default: 4 = no tracking
    filter_mode = params.filter_mode  #default: 1 raw SS and IMU data
    ptu_offset_mode = params.ptu_offset_mode  #default: 0 no PTU offset prior to tracking

    #Show tracking display
    show_display = params.display
    print('show_display = ', show_display)

    #Initiate PID control loop
    #pan-axis (x-axis) PID gains
    pid_x = PID(
        step_size=params.ptu_step_size
    )  #'eighth'    #pid_x will control azimuth ptu motor (assuming orientation of ss is correct)
    pid_x.SetKp(params.kpx)  #0.44
    pid_x.SetKi(params.kix)  #0.05*0
    pid_x.SetKd(params.kdx)  #0.3

    #tilt-axis (y-axis) PID gains
    pid_y = PID(
        step_size=params.ptu_step_size
    )  #pid_y will control azimuth ptu motor (assuming orientation of ss is correct)
    pid_y.SetKp(params.kpy)  #-0.44
    pid_y.SetKi(params.kiy)  #0.01*0
    pid_y.SetKd(params.kdy)  #-0.3

    print('Pan axis (x-axis) PID gains kpx=', params.kpx, 'kix=', params.kix,
          'kdx=', params.kdx)
    print('Tilt axis (t-axis) PID gains kpy=', params.kpy, 'kiy=', params.kiy,
          'kdy=', params.kdy)