How do I control the rotation of object.

I have a 3d game in which the object is controlled by the Gyro on iPad. Object is set to move on x and y axis ONLY. I added a slight rotation to the objects movement to make the movements feel less mechanical. So the object tilts slightly in the direction that its moving. I have run in to 2 issues. I am not able to limit the amount of rotation of the object. Also the objects rotates too slowly.

How do I limit the amount of rotation and how do I get the object to respond faster during rotation. Heres the code that controls rotation:

//Control character rotation
		currentAcceleration = Vector3.Lerp(currentAcceleration, Input.acceleration - initialAcceleration, Time.deltaTime/smooth);

		newRotation = Mathf.Clamp(currentAcceleration.x * sensitivity, -1, 1);
		transform.Rotate(0, 0, -newRotation);

After a little experimentation I was able to get the speed of the rotation to respond quicker. Now if I can figure out how to properly clamp the rotation I’ll be golden. Heres more of the script that controls movement:

void Update() 
	{


		//Move character using gyro//

		//Controls input speed
		_InputDir = getAccelerometer(Input.acceleration);

		//Controll character using accelerometer
		transform.Translate (_InputDir.x * xSpeed, _InputDir.y * ySpeed, 0);

		//Control character rotation
		currentAcceleration = Vector3.Lerp(currentAcceleration, Input.acceleration - initialAcceleration, Time.deltaTime/smooth);

		newRotation = Mathf.Clamp(currentAcceleration.x * sensitivity, -5, 5);
		transform.Rotate(0, 0, -newRotation);

		//Constrain character movement to viewport//
		Vector3 boundaryVector = transform.position;

		Vector3 pos = Camera.main.WorldToViewportPoint (transform.position);
		pos.x = Mathf.Clamp01(pos.x);
		pos.y = Mathf.Clamp01(pos.y);
		pos.z = Mathf.Clamp (transform.position.z, 100, 50);



		transform.position = Camera.main.ViewportToWorldPoint(pos);

	}

Also movement is restricted to camera viewport.